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 ^___^