J'essaie d'étendre LinkedHashMap
à partir de ma classe Étudiants. Par ce que je veux apporter toutes les fonctionnalités d'une carte comme Map.put(value)
, Map.get(key)
. Je crée juste l'objet dans PSVM et ne fais pas de références statiques mais je reçois l'erreur ci-dessous. Est-ce que quelqu'un peut me signaler l'erreur que je commets ici? Y a-t-il également une meilleure approche pour réaliser la tâche? Merci d'avance!Erreur lors de l'extension de LinkedHashMap
import java.util.LinkedHashMap;
public class Students<Integer,String> extends LinkedHashMap<Integer,String> {
public static void main(String args[]) { // line 5
Students<Integer,String> students = new Students<>(); // line 6
students.put(1, "s1");
students.put(2, "s2");
students.put(3, "s3");
System.out.println(students.get(1));
}
}
Message d'erreur:
>> javac Students.java
Students.java:5: error: non-static type variable String cannot be referenced from a static context
public static void main(String args[]) {
^
Students.java:6: error: non-static type variable Integer cannot be referenced from a static context
Students<Integer,String> students = new Students<>();
^
Students.java:6: error: non-static type variable String cannot be referenced from a static context
Students<Integer,String> students = new Students<>();
^
Students.java:6: error: unexpected type
Students<Integer,String> students = new Students<>();
^
required: class
found: <Integer,String>Students<Integer,String>
where Integer,String are type-variables:
Integer extends Object declared in class Students
String extends Object declared in class Students
4 errors
Vous avez nommé votre type générique utilisant des noms de classes Java standard. Votre code est similaire à la classe Students extends LinkedHashMap {'' Etudiants students = 'mais en lui' String' et 'Integer' ne seront pas traités comme' java.lang.String' ni 'java.lang.Integer' par défaut plus. – Pshemo
Ne pas étendre, essayez d'utiliser la composition. –
Merci Gaurava et @Pshemo –