Quote Originariamente inviata da Nekra49 Visualizza il messaggio
Ma penso di aver sbagliato ragionamento visto che poi non posso utilizzare il reference ref per accedere ai metodi della classe MiaClasse. Quindi la mia domanda e': Cosa fa in realta' questo codice? Quale e' la sua utilita'?
Grazie.
Se in una TuaClasse fai es. un:

AltraClasse ac = new AltraClasse();

all'interno del bytecode (il contenuto del .class) di TuaClasse c'è un riferimento "statico" ad AltraClasse. Se AltraClasse non è rintracciabile (non è "in classpath"), la tua applicazione non funzionerà e si schianterà con un NoClassDefFoundError nel momento in cui è necessario caricare la definizione di AltraClasse.

Il Class.forName invece è utile specialmente nei casi dove il nome della classe non è noto a priori (magari è ottenuto da file di configurazione, metadati, ecc...) e c'è di mezzo il polimorfismo nel senso che quella classe magari implementa una interface X (o super-classe, anche astratta) che TU conosci e di cui hai la definizione. Questo viene sfruttato ad esempio quando si cerca di realizzare un sistema basato su "plugin".