Błąd kompilacji dla niezgodności typów

Błąd kompilacji dla niezgodności typów
krancki
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 74.7261832, -41.7409518
  • Postów: 151
0

Hej,
zastanawia mnie dlaczego w takiej sytuacji dostaję błąd niezgodności typu.
Jeżeli oczekuje kolekcji czarodziejów to dlaczego nie mogę dać kolekcji gandalfów ?
Dlaczego tak się dzieje, z czego to wynika ?

screenshot-20220309174259.png

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1914
5

Z tego, ze kolekcje Javowe nie sa kowariantne.
List<String> nie jest podtypem List<Object>. Mozesz w metodzie przyjac
List<? extends Wizard> - powinno zadzialac.

Tematy: java generics, wildcard, covariance/contravariance

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
3

Rozwijajac nieco dlaczego to co napisałeś nie ma sensu:

Kopiuj
List<String> stringi = new ArrayList<>();
stringi.add("dupa");
List<Object> obiekty = stringi; //?!
obiekty.add(1);

I nagle lista stringi która jest List<String> miałaby w sobie inta i byłoby to troche smutne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.