Почему универсальный необработанный класс Java стирает все обобщенные объекты в объект, когда параметры типа не определены? [Дубликат]
На этот вопрос уже есть ответ:
Комбинирование необработанных типов и общих методов 5 ответов Почему этот общий код Java не скомпилируется? 4 ответаЕсли у меня есть класс:
public class GenericClass<TBlah extends Number> {
public List<String> getList() {
return null;
}
}
Когда я пытаюсь использовать этот метод из другого класса:
public class OtherClass {
public void test() {
GenericClass a = null;
for (String s : a.getList()) {
}
}
}
Почемуa.getList()
вернутьList<Object>
пока я не изменю строку над циклом for на:
GenericClass<Number> a = null;
В какой точке a.getList () возвращаетList<String>
как должно быть?
Ред .: Я не понимаю, почему контракт указанgetList()
а @ должно повлиять то, как я объявляю свою переменную 'a'.getList()
всегда возвращаетList<String>
, не важно, что TBlah является