Scusate se il titolo sembra confuso, ma alcuni esempi sono in ordine.Perché non è possibile un tipo generico che contiene un tipo generico essere assegnato ad una classe tipizzata generico di tipo jolly
Diciamo che ho un po 'di classe Java con un parametro di tipo generico:
public class GenericClass<T> {
}
posso creare una variabile digitato per memorizzare un oggetto, con il parametro generico impostato, dire una String
. Java sarà inoltre mi permette di assegnare tale variabile ad un'altra variabile, ma con il parametro generico impostato il tipo jolly <?>
:
GenericClass<String> stringy = ...
GenericClass<?> generic = stringy; // OK
Tuttavia, quando si lavora con una classe con un parametro generico, se si imposta il tipo di quel parametro per essere generico, non si può quindi assegnare un oggetto di quella classe per un tipo identico digitato/genericized dove il parametro quest'ultimo (interno/annidata) è del tipo jolly <?>
:
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
l'errore di compilazione specifico è :
Type mismatch: cannot convert from List<GenericClass<String>> to List<GenericClass<?>>
Intuitivamente penserei che la cessione in questione non dovrebbe essere un problema. Allora, perché questo incarico è un problema?
duplicati di http://stackoverflow.com/questions/1341093/nested-generics-with-wildcards – Dirk