Ho una domanda Java sui generici. Ho dichiarato un elenco generico:Elenco <? estende MyType>
List<? extends MyType> listOfMyType;
Poi in qualche modo cerco di istanziare e aggiungere elementi a quella lista:
listOfMyType = new ArrayList<MyType>();
listOfMyType.add(myTypeInstance);
Dove myTypeInstance
è solo un oggetto di tipo MyType
; non verrà compilato. Dice:
Il metodo add (? Capture # 3 di estende MyType) nel tipo List < cattura # 3 di ? si estende MyType> non è applicabile per gli argomenti (MyType)
Qualche idea?
Come dice Josh Bloch: "Ricordati PECS: Produttore estende, Super consumatori." Poiché listOfMyType è un consumatore (si sta aggiungendo ad esso), 'super' è valido e' extends' non lo è. –
I collegamenti sono ora interrotti. –
Punto di pedanteria: puoi 'mettere'' null' "con extends".Inoltre puoi catturare il tipo e "mettere" i riferimenti che hai "ottenuto" in precedenza. –