Se io ho una classe Item,e voglio avere un ArrayList di tutti i tipi che estendono la classe Item, all' interno della classe main tra i vari campi dichiaro:
Poi però se voglio avere un metodo per aggiungere gli oggetti a questa lista, dichiaro:codice:private ArrayList <? extends Item> lista;
Mi da errore di sintassi:codice:public <T extends Item> void add(T item) { lista.add(item); }
Capisco quindi che il compilatore "non capisce" che il tipo che gli passo è corretto, perchè l' ArrayList è formata da qualsiasi oggetto appartenente a una classe che eredita da Item, io alla lista aggiungo un tipo T che eredita da Item, per cui tutto dovrebbe essere ok, ma perchè mi viene dato questo errore? Come risolvere?codice:cannot find symbol - method add(T); maybe you meant: add(? extends Item) or add (int, ? extends Item)

Rispondi quotando