gpt4 book ai didi

java - 如何在不知道形式参数类型的情况下找到构造函数?

转载 作者:行者123 更新时间:2023-11-29 08:28:51 25 4
gpt4 key购买 nike

我想通过反射创建一个类的实例,并且我知道给定的构造函数参数与构造函数兼容。虽然我没有构造函数的形式参数类型。

我知道我可以遍历该类的所有构造函数来执行此操作,但标准 Java 8 API 中是否有更直接的方法?

最佳答案

如果您的参数的运行时类完全匹配构造函数参数的声明类型,您可以构建相应的Class实例数组,然后查找构造函数:

public static void main(String[] args) throws Exception {
Object[] params = new Object[] {Integer.valueOf(2), "name"};
Class<?> cls[] = new Class<?>[params.length];
List<Class<? extends Object>> classes =
Arrays.asList(params).stream().map(p -> p.getClass())
.collect(Collectors.toList());
for(int i = 0; i < params.length; i++) {
cls[i] = classes.get(i);
}
Person.class.getConstructor(cls)
.newInstance(params);
}

这将适用于在此示例中声明的构造函数:

class Person {
public Person(Integer i, String name) {
System.out.println("i: " + i + " name: " + name);
}
}

打印:

i: 2 name: name

关于java - 如何在不知道形式参数类型的情况下找到构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50023500/

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