2012-09-05 9 views
7

Desidero stampare tutti i nomi di classi in un pacchetto e anche stampare gli attributi corrispondenti ei relativi tipi di dati in ciascun pacchetto.Come convertire il tipo di stringa in tipo di classe in java

In un codice, sono in grado di ottenere i nomi di classe sotto forma di stringa. In un altro codice sono in grado di ottenere gli attributi ei relativi tipi di dati utilizzando Classname.class.getAttribute();

Tuttavia, desidero unire i due codici. Dal momento che nel primo codice ho ottenuto i nomi di classe sotto forma di stringa, non posso utilizzare Classname.class.getAttribute() poiché qui Classname sarà di tipo String.

Quindi voglio un metodo che convertirà il "Classname" dal tipo String al tipo Class.

Ho provato Class.forName() ma non ha funzionato.

+6

Specificare in che modo Class.forName() "non ha funzionato". – skiphoppy

+3

Se Class.forName() non ha funzionato, è molto probabile che a) il nome della classe non sia corretto b) hai ricevuto un messaggio di errore ma non sapevi cosa significava, quindi l'hai ignorato. ;) –

+1

Pubblica il tuo messaggio di errore! e inserisci il codice dove hai provato ad usare 'Class.forName()' –

risposta

16
Class<?> classType = Class.forName(className); 

Assicurarsi className è il nome completo della classe come com.package.class Inoltre, si prega di condividere il messaggio di errore che si vede.

+0

Sì, il nome classe non era completo. Dopo aver dato il nome completo, ha funzionato :) Grazie :) –

1

Se il nome completo di una classe è disponibile, è possibile ottenere la Classe corrispondente utilizzando il metodo statico Class.forName().

Esempio:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

Nota: Assicurarsi che il parametro è fornire per la funzione è il nome completo della classe come com.package.class

Check here per qualsiasi riferimento.

EDIT:

Si potrebbe anche provare a utilizzare loadClass() metodo.

Esempio:

ClassLoader cl; 
Class c = cl.loadClass(name); 

Viene richiamato dalla macchina virtuale Java per risolvere i riferimenti di classe.

Sintassi:

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Here è un'implementazione di ClassLoader.

0

Si prega di provare come segue.

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
Problemi correlati