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:
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.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(); [...]
È 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 ^___^

Rispondi quotando