Java 带反射的构造函数中的类数组

Java 带反射的构造函数中的类数组,java,Java,我需要在代码中使用反射,这样我的程序就不会因每个不同的版本而中断。我想要创建一个类的新实例,并且我想要使用的构造函数包含一个类的数组。但该类也必须使用反射来找到。这是我目前拥有的一个例子 Constructor<?> constructor = getClass("className").getConstructor(getClass("anotherClass")); private Class<?> getClass(String name) { retur

我需要在代码中使用反射,这样我的程序就不会因每个不同的版本而中断。我想要创建一个类的新实例,并且我想要使用的构造函数包含一个类的数组。但该类也必须使用反射来找到。这是我目前拥有的一个例子

Constructor<?> constructor = getClass("className").getConstructor(getClass("anotherClass"));

private Class<?> getClass(String name) {
    return Class.forName("my.package." + version + "." + name);
}
Constructor=getClass(“className”).getConstructor(getClass(“anotherClass”));
私有类getClass(字符串名称){
返回Class.forName(“my.package.+version+”+name);
}
但是,构造函数不使用该类,而是使用该类的数组,因此如何将该类转换为它的数组类型?

指定数组类型的类名。您可以构造这样一个名称并使用
类#forName
。但是,在基本类型和引用类型之间,名称的逻辑不同,因此生成那些
String
名称可能会很麻烦

相反,您可以为给定类型构造一个大小为0的数组,并使用它通过
getClass()
检索其类型

比如说

Class<?> componentType = Class.forName("java.lang.String");
Class<?> arrayType = java.lang.reflect.Array.newInstance(componentType, 0).getClass();
System.out.println(arrayType);
arrayType
随后将保存给定数组类型的
Class
对象。您可以使用它来检索构造函数

class [Ljava.lang.String;