为什么通过反射调用main时参数个数错误?

为什么通过反射调用main时参数个数错误?,第1张

为什么通过反射调用main时参数个数错误?

您将不得不使用

m.invoke(null, (Object)new String[]{});

invoke(Object,Object...)
方法接受
Object...

(更正)
String[]
传递的数组按原样使用
Object[]
并且为空,因此它没有要传递给方法调用的元素。通过将其强制转换为对象
Object
,这就是包装中的唯一元素
Object[]

这是由于数组协方差。你可以做

public static void method(Object[] a) {}...method(new String[] {});

因为a

String[]
Object[]

System.out.println(new String[]{} instanceof Object[]); // returns true

另外,您也可以将其包装

String[]
Object[]

m.invoke(null, new Object[]{new String[]{}});

然后,该方法将使用

Object[]
as中的元素作为方法调用的参数。

注意调用的StackOverflowError

main(..)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5565791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存