如何使用Java中的类加载器获取数组类?

问题描述 投票:4回答:3

我这样定义了一个类加载器名称MyClassLoader。

cl = new MyClassLoader();

我可以使用cl加载类A。

Class c = cl.loadClass();

但是如何加载A[].class的类?

java classloader
3个回答
2
投票

您必须知道,数组类型的类名称是X附加的字符[的次数,其中X是数组维数,然后是字符L。然后,您附加数组类型的合格类名称。最后,添加字符;

因此

Class<?> clazz = Class.forName("[Lcom.something.Examples;");

如果由相同的Class加载,将使您获得A[].class返回的ClassLoader实例。

请注意,您将无法以这种方式实例化此类型。对于一维数组,您必须使用Array.newInstance()传递Class对象,对于一维数组,必须使用A对象,对于二维数组,必须将Class对象传递给A[],依此类推。


3
投票

我认为您想这样使用java.lang.reflect.Array.newInstance()-


0
投票

我在Java 8的标准API中找不到解决方案,所以我写了这个实用程序方法:

© www.soinside.com 2019 - 2024. All rights reserved.