Java反射调用具有基本类型参数的构造函数
- 论坛
- Java反射调用具有基本类型参数的构造函数
15 浏览
Java反射调用具有基本类型参数的构造函数
在我的测试框架中有一个方法,根据传入的参数创建一个类的实例:
public void test(Object... constructorArgs) throws Exception { Constructorcon; if (constructorArgs.length > 0) { Class>[] parameterTypes = new Class>[constructorArgs.length]; for (int i = 0; i < constructorArgs.length; i++) { parameterTypes[i] = constructorArgs[i].getClass(); } con = clazz.getConstructor(parameterTypes); } else { con = clazz.getConstructor(); } }
问题是,如果构造函数使用了原始类型参数,这种方式就无法正常工作,如下所示:
public Range(String name, int lowerBound, int upperBound) { ... } .test("a", 1, 3);
结果是:
java.lang.NoSuchMethodException: Range.(java.lang.String, java.lang.Integer, java.lang.Integer)
原始的int类型会自动装箱为对象版本,但是我该如何将它们还原以便调用构造函数呢?