黑马程序员技术交流社区

标题: 成员方法的反射问题 [打印本页]

作者: LuckyQS    时间: 2014-2-11 14:14
标题: 成员方法的反射问题
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});

mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
在解决类型参数不对的问题上,张老师给了两种解决方式,第一种我可以理解,第二个有点看不明白,请大神来解释一下。
作者: 未烧开的白开水    时间: 2014-2-11 15:08
1、mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});
2、mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
invoke方法的第二个参数明确要使用Object类型,String的父类是Object类型,强转不会有任何问题。

如果你还是有疑问,可能你就是对数组的声明和使用没有完全理解。
作者: 2424308    时间: 2014-2-11 15:30
因为这个方法会把数组拆开,然后在使用,所以才在外面包一层数组让他去拆。第二种是告诉他这个不是数组,不用拆。
作者: wq10zj    时间: 2014-2-11 19:45
Object类是一切类的超类
new Object[]{new String[]{"111","222","333"}}//嗯  能理解  因为new 的是Object  后续不会产生类转问题

(Object)new String[]{"111","222","333"}//就把它看成为防止类转异常提前做的准备




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2