Przepraszam, jeśli tytuł wydaje się zagmatwany, ale niektóre przykłady są w porządku.Dlaczego typ ogólny z typem ogólnym nie może być przypisany do typu ogólnego Typ symbolu wieloznacznego
Powiedzmy mam pewne klasy Java z parametrem typu rodzajowego:
public class GenericClass<T> {
}
mogę utworzyć zmienną wpisany do przechowywania obiektu, za pomocą parametru rodzajowego ustawiony, powiedzieć String
. Java będzie również dać mi przypisać tę zmienną na inną zmienną, ale z parametrem generycznego ustawionym typem wieloznaczny <?>
:
GenericClass<String> stringy = ...
GenericClass<?> generic = stringy; // OK
jednak, gdy pracuje z klasą z parametru rodzajowego, jeśli ustawić typ tego parametru za rodzajową, nie można następnie przypisać obiekt tej klasy do identycznie wpisany/rodzaju genericized gdzie ten ostatni (wewnętrzna/zagnieżdżone) parametr jest typu wildcard <?>
:
GenericClass<GenericClass<String>> stringy = ...
GenericClass<GenericClass<?>> generic = stringy; // Compile Error
// And just in case that is confusing, a more
// realistic example involving Collections:
List<GenericClass<String>> stringy = ...
List<GenericClass<?>> generic = stringy; // Compile Error
specyficzna jest błąd kompilacji :
Type mismatch: cannot convert from List<GenericClass<String>> to List<GenericClass<?>>
Intuicyjnie sądzę, że przedmiotowe zadanie nie powinno stanowić problemu. Dlaczego to zadanie jest problemem?
Duplikat strony http://stackoverflow.com/questions/1341093/nested-generics-with-wildcards – Dirk