我試圖運行此代碼:加載一個數組類加載器
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);
}
}
但它拋出一個ClassNotFoundException。有趣的是,如果我使用這條線:
Class.forName(cname);
它工作得很好。
這是怎麼回事?
編輯: 我使用Java 6 println
打印此:
[Ljava.lang.Object;
我猜你出於好奇心,因爲在java數組中,「類」是由vm生成的,所以加載它們是沒有意義的。 (你會加載組件類,然後創建一個數組,一個虛擬機將創建數組類) – morpheus05
[Class.forName()vs ClassLoader.loadClass() - 可用於動態加載?](http:///stackoverflow.com/questions/8100376/class-forname-vs-classloader-loadclass-which-to-use-for-dynamic-loading) –
數組類型確實是一個類;和'Class.forName()'javadoc允許它。 – ZhongYu