Sto cercando di eseguire questo codice:Caricamento di un array con un classloader
public class ClassLoaderTest
{
public static void main(String[] args) throws Exception
{
Object[] obj = new Object[]{};
String cname = obj.getClass().getName();
System.out.println(cname);
ClassLoaderTest.class.getClassLoader().loadClass(cname);
}
}
Ma getta un ClassNotFoundException. È interessante notare che se invece utilizzo questa riga:
Class.forName(cname);
funziona perfettamente.
Che cosa sta succedendo qui?
edit: sto usando Java 6. Le println
stampe questo:
[Ljava.lang.Object;
Credo che si chiede per curiosità, perché in Java matrice "classi" sono generati dalla vm quindi non ha senso per caricarli. (Il vostro potrebbe caricare la classe del componente e quindi creare una matrice di una VM creerebbe la classe Array) – morpheus05
possibile duplicato del [Class.forName() vs ClassLoader.loadClass() - che da utilizzare per il caricamento dinamico?] (Http://stackoverflow.com/questions/8100376/class-forname-vs-classloader-loadclass-which-to-use-for-dynamic-loading) –
un tipo di array è effettivamente una classe; e 'Class.forName()' javadoc lo consente. – ZhongYu