?!?!?!?!?
cioè......funziona lo stesso. Mi sono fatto due classi.
Premetto la Generica:
public class ProdottoPerLista <T>{
private T obj;
public ProdottoPerLista(T obj) {
setObj(obj);
}
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
}
e poi le classi Inventario e Inventario2:
import java.util.*;
public class Inventario {
List<ProdottoPerLista> list = new ArrayList<>();
public void aggiungiOggetto() {
list.add(new ProdottoPerLista(new Monitor("HP", "LCD", 23)));
list.add(new ProdottoPerLista(new Notebook("ASUS","Intel",8)));
list.add(new ProdottoPerLista(new Stampante("CANON", "Laer")));
}
public void stampaLista() {
for (int i=0; i < list.size(); i++) {
System.out.println(list.get(i).getObj().toString());
}
}
}
import java.util.*;
public class Inventario2 {
List<Prodotto> list = new ArrayList<>();
public void aggiungiOggetto() {
list.add(new Monitor("HP", "LCD", 23));
list.add(new Notebook("ASUS","Intel",8));
list.add(new Stampante("CANON", "Laer"));
}
public void stampaLista() {
for (int i=0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
in entramibi i casi ho lo stesso output:
public class TestGeneric {
public static void main(String[] args) {
// TODO Auto-generated method stub
Inventario i = new Inventario();
i.aggiungiOggetto();
i.stampaLista();
Inventario2 i2 = new Inventario2();
i2.aggiungiOggetto();
i2.stampaLista();
}
}
Monitor [marca=HP, tipo=LCD, dimensioniPollici=23]
Notebook [marca=ASUS, ram=8, cpu=Intel]
Stampante [marca=CANON, tipo=Laer]
Monitor [marca=HP, tipo=LCD, dimensioniPollici=23]
Notebook [marca=ASUS, ram=8, cpu=Intel]
Stampante [marca=CANON, tipo=Laer]
Ma quindi, la classe generica a che serve? In questo caso a niente.
Ma forse serve per mettere in un ArrayList oggetto diversi dipo che ne so...... Dipendenti, Automobili, Alberi, Panchine, AnimaleDomestico ???
E non poteri dichiarare allora la list come List<Object> visto che tutte le classi sono sottoclassi di Object? E poi se mi servono i dati non faccio altro che fare un cast?
Mi sfugge proprio il vantaggio dei Generics......a che servono!