我这样定义了一个类加载器名称MyClassLoader。
cl = new MyClassLoader();
我可以使用cl加载类A。
Class c = cl.loadClass();
但是如何加载A[].class
的类?
您必须知道,数组类型的类名称是X附加的字符[
的次数,其中X是数组维数,然后是字符L
。然后,您附加数组类型的合格类名称。最后,添加字符;
。
因此
Class<?> clazz = Class.forName("[Lcom.something.Examples;");
如果由相同的Class
加载,将使您获得A[].class
返回的ClassLoader
实例。
请注意,您将无法以这种方式实例化此类型。对于一维数组,您必须使用Array.newInstance()
传递Class
对象,对于一维数组,必须使用A
对象,对于二维数组,必须将Class
对象传递给A[]
,依此类推。
我认为您想这样使用java.lang.reflect.Array.newInstance()-
我在Java 8的标准API中找不到解决方案,所以我写了这个实用程序方法: