Я пытаюсь расширить LinkedHashMap
из класса моих учеников. Под этим я хочу привести все функциональные возможности Карты, например Map.put(value)
, Map.get(key)
. Я просто создаю объект внутри PSVM и не делаю статических ссылок, но все же получаю следующую ошибку. Может кто-нибудь указать мне, какую ошибку я здесь делаю? Также есть ли лучший подход к достижению этой задачи? Заранее спасибо!Ошибка при расширении 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));
}
}
Сообщение об ошибке:
>> 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
Вы назвали свой общий тип, используя имена стандартных классов Java. Ваш код похож на 'class Students extends LinkedHashMap {' 'Учащиеся students =', но внутри него 'String' и' Integer' не будут обрабатываться как 'java.lang.String' или' java.lang.Integer' по умолчанию больше. – Pshemo
Не расширяйте, попробуйте использовать композицию. –
Спасибо Gaurava и @Pshemo –