黑马程序员技术交流社区
标题:
反射方法执行某个类的main方法问题<已经解决>
[打印本页]
作者:
马林康
时间:
2012-6-13 20:41
标题:
反射方法执行某个类的main方法问题<已经解决>
本帖最后由 马林康 于 2012-6-14 06:51 编辑
执行代码
Method methodMain=TestDemo.class.getMethod("main", String[].class);
System.out.println(methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}}));
复制代码
类
class TestDemo{
public static void main(String[] args)
{
for(String str:args)
{
System.out.println(str);
}
}
}
复制代码
结果后面怎么多了个null
未命名.jpg
(16.71 KB, 下载次数: 81)
下载附件
2012-6-13 20:40 上传
作者:
刘鹏程
时间:
2012-6-13 21:21
methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}});这个方法调用后显示的是你上图中的
111、222、333、444
但你不小心在方法外面多加了一个输出,即:System.out.println(methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}}));
经查文档中的Method中的方法invoke,文档中说明如下:
如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不 被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。
由于你调用的是main方法,也就是void类型,最后就打印出null了。
作者:
李盼
时间:
2012-6-13 22:38
如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不 被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。
API文档查到的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2