栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么通过反射调用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(..)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号