Salve ragazzi, sto studiando il libro di Claudio De Sio Cesari su Java 5. Mi trovo nel paragrafo riguardante la classe Class e la reflection. L'ultima caratteristica specificata nel libro recita " Tramite la classe Class e' anche possibile istanziare oggetti di una certa classe, conoscendone solo il nome."
Gia questa affermazione mi ha confuso. Io quando istanzio un ogetto devo conscere il nome della classe. E' l'unica cosa che devo conoscere. Infatti scrivo:
Io conoscendo solo il nome della classe ho istanziato un oggetto della sudetta classe.codice:MiaClasse reference = new MiaClasse();
Ora il libro continua mostrando un esempio:
Ora io ho interpretato questo codice in questa maniera: miaClasse e' un reference che punta alla classe MiaClasse(Che e' la classe realmente esistente). Quindi e come se copiassi in miaClasse la classe MiaClasse. Dopodiche devo creare il reference per la classe. Visto che non so di che tipo e la classe (Anche se non serve saperlo in teoria.. mi basta sapere il nome no?)uso la classe Object (utilizzando cosi il poliformismo) per creare il reference. Quindi crea il reference ref che pensa di puntare ad un object ma che in realta punta ad una istanza di miaClasse(MiaClasse).codice:try { Class miaClasse = Class.forName("MiaClasse"); Object ref = miaClasse.newInstance(); } catch (ClassNotFoundException exc) { ... }
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.