IllegalArgumentException:Java Constructor.newInstance()中的参数数目错误

xandy:

考虑以下代码,

public class StartUp {

    public StartUp(String[] test){}

    public static void main(String[] args) throws Exception{
        Constructor cd = StartUp.class.getConstructor(String[].class);
        System.out.println(cd.newInstance(new String[]{}).toString());
    }
}

它出什么问题了?我收到以下异常:

线程“主”中的异常java.lang.IllegalArgumentException:sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)处的sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)处的参数数目错误。位于com.test.StartUp.main(StartUp.java:10)的java.lang.reflect.Constructor.newInstance(Constructor.java:513)的newInstance(DelegatingConstructorAccessorImpl.java:27)

乔恩·斯基特(Jon Skeet):

String[]正在隐式转换Object[]为空参数数组,而不是作为空数组的单个参数。试试这个:

Object arg = new String[0];
System.out.println(cd.newInstance(arg).toString());

要么

System.out.println(cd.newInstance(((Object)new String[0]).toString());

甚至避免编译器完全为您创建数组:

System.out.println(cd.newInstance(new Object[] { new String[0] }).toString());

基本上,这是可变参数处理和数组协方差的混合:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

龙目岛与参数数目错误

调用方法时参数数目错误

C ++中Java的IllegalArgumentException的等效项

使用反射:java.reflection.Constructor.newInstance()

IllegalArgumentException:参数数量错误

尝试检测Java字节码时堆栈中的参数数量错误

获取错误java.lang.IllegalArgumentException

为什么我得到Java.lang.IllegalArgumentException:使用反射使用varargs调用方法时参数数目错误

java.lang.IllegalArgumentException:无法解析参数编号:电话

java.lang.IllegalArgumentException:参数“ directory”不是目录

java.lang.IllegalArgumentException:未知参数名称:客户

JSF:java.lang.IllegalArgumentException:无法解析参数编号

Java EE API REST错误:java.lang.IllegalArgumentException

Rails 3中的参数数目错误(3为2)

COUNTIF phpexcel参数数目错误

method.invoke生成IllegalArgumentException:参数数量错误

错误的参数数目(0..1为2)

ArgumentError输入的参数数目错误?方法

即使正确的参数,调用中的参数数目或类型也错误

Java Method.invoke()抛出IllegalArgumentException:参数类型不匹配

错误:java.lang.IllegalArgumentException

错误:消息中的ArgumentError#个错误的新参数数目(2为1)

Django NoReverseMatch参数数目错误

Java swt IllegalArgumentException:参数不能为空

改造错误 - java.lang.IllegalArgumentException

QuickSort 方法中的 java.lang.IllegalArgumentException

java.lang.IllegalArgumentException:未找到 Retrofit 注释。(参数#4)

如何修复:Java 中的“参数索引超出范围(1 > 参数数量,为 0)”错误?

比较器错误 java.lang.IllegalArgumentException