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?
Se fosse corretto allora non capisco perchè usare la reflection se la stessa cosa si potrebbe fare in quest'altro modo: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++; }
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++; }

Rispondi quotando

