Tengo una pregunta de Java sobre genéricos. Declaré una lista genérica:Lista <? extiende MyType>
List<? extends MyType> listOfMyType;
Luego, en algún método que intento crear instancias y añadir elementos a la lista:
listOfMyType = new ArrayList<MyType>();
listOfMyType.add(myTypeInstance);
Dónde myTypeInstance
es sólo un objeto de tipo MyType
; no compilará Dice:
El método add (? Captura # 3 de extiende MyType) en el tipo de lista de captura < # 3 de ? extiende MyType> no es aplicable para los argumentos (MyType)
¿Alguna idea?
Como dice Josh Bloch: "Recuerde PECS: Productor Extiende, Súper del consumidor." Dado que listOfMyType es un consumidor (usted lo está agregando), 'super' es válido y' extends' no lo es. –
Los enlaces ahora están rotos. –
Punto de pedantería: puede 'poner' nulo' "con extiende".También puedes capturar el tipo y "poner" las referencias que has "obtenido" previamente. –