A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

牛杨 发表于 2012-9-20 11:09
既然可以把int... 当做int[]  也就是说 把可变参数当作了一个数组来使用。
那么我 觉得这句 SomeArgs.cla ...

SomeArgs.class.getMethod("println", int[].class).invoke(someArgs, (Object )arr); 比较合适



为什么呢?
回复 使用道具 举报
我认为这个问题老师在视频里已经讲解了 ,没记错的话  张老师应该讲了如何反射出主函数   可变参数跟主函数中的的 String一样的吧  只是形式不一样的,老师说过,在JDK1.5出现的可变参数 ,按说主函数 public static void main(String args[]){}  也应该写成 pubilc static void main(String...args){} 但是主函数的写法没有改变 就像老师说的,可能是历史遗留的问题  就是用习惯了   但是我相信也可以这样写pubilc static void main(String...args){};LZ可以试试
回复 使用道具 举报
寇龙飞 发表于 2012-9-20 20:52
SomeArgs.class.getMethod("println", int[].class).invoke(someArgs, (Object )arr); 比较合适

因为 既然已经把这个 可变参数 看成了一个 数组 。 如果你通过invoke方法调用这个(把可变参数看做数组的)方法 传递实参的时候 就需要把把一个实参数组作为一个整体传递过去 。因此前面就需要加上一个Object了。
不过 不加那个Object也没啥问题。只是理解的时候,有些前后不一。

点评

arr是个数组,本来就是一个整体。。。  发表于 2012-9-20 22:55
回复 使用道具 举报
黄敏 发表于 2012-9-20 22:14
我认为这个问题老师在视频里已经讲解了 ,没记错的话  张老师应该讲了如何反射出主函数   可变参数跟主函数 ...

哇塞,我刚才试了试 主函数的 字符串数组 真的可以改成可变参数的形式啊。
我看到这个问题的时候是看到了 张老师说:只要是在源程序中出现的类型,都有各自的Class实例对象。 我当时想可变参数的Class实例对象是啥?这个问题想了好久没想明白 。后来学到了invoke方法就想到要提出这个问题。我提这个问题的时候,我在论坛上搜了搜 。发现13期也有一个兄弟提了这个问题。但是没有人能明明白白地回答。所以我就又提了一遍 。
回复 使用道具 举报
有些许的恐怖,鄙人表示还没看到这里……只能飘过
回复 使用道具 举报
王小闲7 发表于 2012-9-20 23:40
有些许的恐怖,鄙人表示还没看到这里……只能飘过

没关系,总有一天会看到这里的。继续努力啊
回复 使用道具 举报
大哥换个头像吧 看着很别扭
回复 使用道具 举报
尤圣回 发表于 2012-9-21 16:14
大哥换个头像吧 看着很别扭

那兄弟给我推荐个吧
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马