Originariamente inviato da Lucis
Ho definito una classe astratta Oggetto e devo definire alcune classi concrete che estendono Oggetto: diciamo Tavolo, Sedia e Divano.
Le informazioni riguardanti le istanze di tali oggetti sono in un db in una tabella tipo:
oggetti(
id, tipo, dimx, dimy, dimz)
ad es:
12,"divano",250,100,90
13,"sedia",60,130,60
etc...
Durante l'inizializzazione la mia applicazione deve inserire in una List tali oggetti. Avevo in mente di fare in questo modo:
codice:
[...]
List ogg = new LinkedList();
ResultSet rs = st.executeQuery("select * from oggetti");
while (rs.next()) {
Oggetto o = null;
String tipo = rs.getString("tipo");
if (tipo.equals("divano")) {
o = new Divano(rs.getInt("id"),rs.getInt("dimx"),rs.getInt("dimy"),rs.getInt("dimz"));
} else if (tipo.equals("sedia")) {
o = new Sedia(rs.getInt("id"),rs.getInt("dimx"),rs.getInt("dimy"),rs.getInt("dimz"));
} else if (tipo.equals("tavolo")) {
o = new Tavolo(rs.getInt("id"),rs.getInt("dimx"),rs.getInt("dimy"),rs.getInt("dimz"));
}
if (o != null) {
ogg.add(o);
}
}
rs.close();
[...]
ma poi ripensandoci non mi sembra una bella idea: i tipi di oggetti (e rispettive classi) saranno moltissimi e ogni volta non posso stare ad aggiungere un else if.
È possibile specificare dinamicamente la classe di un oggetto per evitare gli else if? Potrei ad esempio memorizzare il nome della classe voluta nel campo tipo della tabella ("Divano","Sedia",etc)...
Ciao e grassie ^___^