黑马程序员技术交流社区
标题:
反射调用main方法疑问
[打印本页]
作者:
Sponge
时间:
2011-12-16 22:04
标题:
反射调用main方法疑问
本帖最后由 Sponge 于 2011-12-16 22:04 编辑
有一个类如下:
class StrDemo
{
public void testArrayPara(String[] args)
{
for(String arg : args)
{
System.out.println(arg);
}
}
}
普通可变参数方法的调用如下:
StrDemo demo = new StrDemo();
demo.testArrayPara(new String[]{"nihao","ds"});
可是大家记得张老师讲的反射调用main函数吗?
有一句 mainMethod.invoke(null,
(Object)
new String[]{"111","222","333"});不懂为什么一定要加(Object)转换
同样都是调用这么一个方法,为什么不能跟上面一样不用Object转换?
作者:
马伟奇
时间:
2011-12-16 22:28
当我们调用一个类的main方法时,invoke方法传入的对象可以为null,因为main方法是静态的,第二个参数传入一个String数组,但是因为jdk1.5兼容1.4,在方法运行时它会将数组拆开,变成多个参数,所以我们需要将String数组用一个Objrct数组包装,避免这种情况发生,因为String数组就是一个Object,我们也可以在数组前面用Object转换类型
作者:
Sponge
时间:
2011-12-17 11:13
马伟奇 发表于 2011-12-16 22:28
当我们调用一个类的main方法时,invoke方法传入的对象可以为null,因为main方法是静态的,第二个参数传入一个S ...
哦,明白了,谢谢哈
作者:
我心飞翔
时间:
2011-12-17 12:49
Object表示一个对象,对象里可以存放任何类型的数据:String int 数组,list 其他对象等等,不过要想使用都要想使用Object里的数据几乎都要先判断是不是null后在转换成想要的数据
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2