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:
codice:
private ArrayList <? extends Item> lista;
Poi però se voglio avere un metodo per aggiungere gli oggetti a questa lista, dichiaro:
codice:
public <T extends Item> void add(T item)
{
    lista.add(item);
}
Mi da errore di sintassi:
codice:
cannot find symbol - method add(T); maybe you meant: add(? extends Item) or add (int, ? extends 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?