Ho studiato da poco la reflection in java ed ho dei dubbi su come utilizzarla.
Vi faccio un esmepio:
Ho creato delle classi A, B, C. Tutte e tre estendono una certa classe X e ognuna ha due campi, uno stringa e un intero. Devo creare queste classi leggendo le informazioni da un file di testo. Il file è strutturato in questo modo:
NomeClasse Stringa Intero
Io non so a priori se tutte e tre le classi saranno create, ne se c'è un ordine specifico in cui le informazioni sono salvate nel file. Per creare quindi una o più di queste classi è corretto scrivere questo frammento di codice?


codice:
Class<?> c=Class.forName("X");
Class<? extends X> classe=c.asSubClass(X.class);
String[] nomiClassi, stringhe, interi;
......
........
leggo dal file i dati
.....
.....
Constructor<? extends X> costr=classe.getConstructor(String.class, Integer.class);
X temp=costr.newinstance(stringa, intero);

while(i<nomiClassi.lenght) {
if(nomiClassi[i].compareTo("A")==0)
    A classeA=(A) temp;
else
      if(nomiClassi[i].compareTo("B")==0)
               B classeB=(B) temp;
      else
           if(nomiClassi[i].compareTo("C")==0)
                 C classeC=(C) temp;

i++;
}
Se fosse corretto allora non capisco perchè usare la reflection se la stessa cosa si potrebbe fare in quest'altro modo:
codice:
String[] nomiClassi, stringhe, interi;
......
........
leggo dal file i dati
.....
.....
int i=0;
while(i<nomiClassi.lenght) {
   if(nomiClassi[i].compareTo("A")==0)
      A classeA=new A(stringhe[i], interi[i]);
   else
      if(nomiClassi[i].compareTo("B")==0)
               B classeB=new B(stringhe[i], interi[i]);
      else
           if(nomiClassi[i].compareTo("C")==0)
                 C classeC=new C(stringhe[i], interi[i]);

i++;
}