黑马程序员技术交流社区
标题:
成员方法的反射问题
[打印本页]
作者:
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