gpt4 book ai didi

java - 使用 getDeclaredConstructor 实例化 Java 类会引发 IllegalArgumentException

转载 作者:行者123 更新时间:2023-12-01 21:47:53 25 4
gpt4 key购买 nike

我有带有 String[] 构造函数的类(没有默认构造函数):

我需要按名称动态构造一个实例:

package tests;

import java.lang.reflect.Constructor;

interface I {

}

class A implements I {
public A(String[] args) {
System.out.printf("Args = %s", args.toString());
}
}

public class DynaCon {
public static void main(String[] args) throws Exception {
@SuppressWarnings("unchecked")
Class<I> clz = (Class<I>) Class.forName("tests.A");
Constructor<I> ctr = clz.getDeclaredConstructor(args.getClass());
ctr.newInstance(args);
}

}

为什么会引发 IllegalArgumentException?

最佳答案

这是可变参数的问题。尝试:

I obj = ctr.newInstance(new Object[] { a });

Constructor.newInstance 定义为 T newInstance(Object... initargs)。由于 String[] 是一个 Object[] (并且在 J2SE 5.0 之前工作),因此您尝试使用单个 String 调用构造函数-接受论点。

关于java - 使用 getDeclaredConstructor 实例化 Java 类会引发 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916674/

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