gpt4 book ai didi

java - 具有反射的构造函数中的类数组

转载 作者:搜寻专家 更新时间:2023-11-01 02:04:47 25 4
gpt4 key购买 nike

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

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

private Class<?> getClass(String name) {
return Class.forName("my.package." + version + "." + name);
}

但是构造函数没有使用那个类,而是使用那个类的数组,那么如何将这个类变成它的数组类型呢?

最佳答案

The Java Virtual Machine specification指定数组类型的类名。您可以构造这样一个名称并使用 Class#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);

将打印

class [Ljava.lang.String;

arrayType 将保存给定数组类型的 Class 对象。您可以使用它来检索构造函数。

关于java - 具有反射的构造函数中的类数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com