使用默认值作为参数动态调用方法

时间:2015-08-25 15:23:55

标签: java reflection

我试图使用Java Reflection动态调用类中的某些方法。这些方法具有不同类型的参数量。现在,我正在寻找一种动态调用它们的简单方法:

  • 原始类型参数应使用基本类型的默认值作为参数值
  • 非基本类型参​​数应使用NULL作为参数值

这是我到目前为止所尝试的内容:

final List<Object> parameters = new ArrayList<Object>();
for (final Class<?> parameterType : method.getParameterTypes()) {
    if (parameterType.isPrimitive()) {

        // FIXME: use default value of primitive type
        final Class<?> nonPrimitiveClass = ClassUtils.primitiveToWrapper(parameterType);
        parameters.add(nonPrimitiveClass.newInstance());
    } else {
        parameters.add(null);
    }
}

final Screen currentScreen = (Screen) method.invoke(screenFactory, parameters.toArray());

不幸的是,我尝试获取默认值不起作用,因为newInstance试图调用默认构造函数,例如java.lang.Integer不存在。

  1. 是否有一种简单的方法来获取基本类型的默认值 没有任何外部库,除了Apache lang?

  2. 是否有另一种使用默认动态调用方法的方法     参数比我的尝试?

  3. 提前致谢。

0 个答案:

没有答案