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 odpowiedzi

Jeś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

questionAnswers(1)

yourAnswerToTheQuestion