Dlaczego ogólna klasa surowa Java usuwa wszystkie rodzaje ogólne, aby sprzeciwić się, gdy parametry typu nie są określone? [duplikować
To pytanie ma już odpowiedź tutaj:
Łączenie typów surowych i metod ogólnych 5 odpowiedziDlaczego ten ogólny kod Java nie zostanie skompilowany? 4 odpowiedziJeśli mam zajęcia:
public class GenericClass<TBlah extends Number> {
public List<String> getList() {
return null;
}
}
Kiedy próbuję użyć tej metody z innej klasy:
public class OtherClass {
public void test() {
GenericClass a = null;
for (String s : a.getList()) {
}
}
}
Dlaczegoa.getList()
zwróćList<Object>
, dopóki nie zmienię linii powyżej pętli for na:
GenericClass<Number> a = null;
W którym punkcie a.getList () zwracaList<String>
jak to powinno zrobić?
Edycja: Nie rozumiem, dlaczego umowa określona przezgetList()
powinien mieć wpływ na to, jak zadeklaruję moją zmienną „a”.getList()
zawsze zwracaList<String>
, nie ma znaczenia co TBlah jest