Czytałem generics java, natknąłem się na interesujące zapytanie. Moje pytanie jest następujące.Java Generics dla dzikich kart z górną i dolną granicą
Na górnej ograniczonego zamiennika
public static void printList(List<? extends Number> list) { for (int i = 0; i < 10; i++) { list.add(i);// gives compilation error } }
za niższą ograniczonego zamiennika
public static void printList(List<? super Integer> list) { for (int i = 0; i < 10; i++) { list.add(i);// successfully compiles } }
Jestem mylić z tym, ponieważ patrząc na dokumentacji Sun Oracle Rozumiem, że kod powinien się skompilować dla punktu 1, jak również
Upper Bound Wildcard Lower Bound Wildcard
Czy ktoś może mi pomóc to zrozumieć?
@baraky: dziękuję za link, ale jakoś mi to umknęło ... ale wciąż pytanie brzmi: dlaczego nie skompiluje się, gdy typ ogólny wie, że musi to być klasa rozszerzona o Number. Przepraszamy za zbędne pytanie. Wciąż jest dla mnie niejasna. – chaosguru