【发布时间】:2015-08-05 01:21:20
【问题描述】:
我正在尝试运行此代码:
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 生成的,所以加载它们是没有意义的。 (您将加载组件类,然后创建一个数组,然后 vm 将创建数组类)
-
一个数组类型确实是一个类;并且
Class.forName()javadoc 允许它。
标签: java class classloader loader