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

本帖最后由 沙漠里的小鱼 于 2012-2-28 18:58 编辑

ArrayList<Integer> collection3 =new ArrayList<Integer>();
collection3.getClass.getMethod("add",Object.class).invoke(collection3,"abc");
System.out.println(collection3.get(0));
视频中打印出来的结果是abc 我想问下 collection3.getClass.getMethod("add",Object.class).invoke(collection3,"abc");这句语句意思是象collection3这个对象传入abc 然后使用get(0) 我的疑惑就是get()里面传递的值是索引 那get(0)应该是a啊 为什么会是3呢 还有一个疑惑是add方法里面好像没有参数啊  collection3.getClass.getMethod("add",Object.class)应该直接写成collection3.getClass.getMethod("add")啊 谢谢大家

13 个回复

倒序浏览

回帖奖励 +5

本帖最后由 杨盼 于 2012-2-28 15:47 编辑

我这里输出的是abc,这是正确的,再说collection3.getClass.getMethod("add",Object.class),这个里面Object.class是数据类型,add方法是要添加参数的,不然谁知道你添加的是什么,还有你程序好像有点错误,我稍微改动了一下
ArrayList<Integer> collection3 =new ArrayList<Integer>();
                 collection3.getClass().getMethod("add",Object.class).invoke(collection3,"abc");
                  System.out.println(collection3.get(0));

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 技术分照样给

查看全部评分

回复 使用道具 举报
杨盼 发表于 2012-2-28 15:45
我这里输出的是abc,这是正确的,再说collection3.getClass.getMethod("add",Object.class),这个里面Objec ...

谢谢 我知道方法名字的后面传递数据类名 因为方法名字有可能相同 用参数类型来区别到底是哪个方法 我的意思是add方法里面没有参数 所以就不要传递参数类型了  还有那个get(0)应该是a啊 get里面的参数是索引  结果不应该是abc啊  迷惑 求解答

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
你传递的是“abc”这是一个,字符串String str="abc",这样加入一个集合,然后输出还是abc,先回答这个,你那个“我的意思是add方法里面没有参数 所以就不要传递参数类型了”这句话是不是要把add置空啊?再说每个集合的add方法里面都有参数,不然怎么加入啊

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
杨盼 发表于 2012-2-28 15:55
你传递的是“abc”这是一个,字符串String str="abc",这样加入一个集合,然后输出还是abc,先回答这个,你 ...

我的意思是传递的abc到collection3中 get方法里面的参数是索引 所以get(0)就是a get(1)就是b get(2)就是c啊  还有那个Arrylist类里面add方法有参数吗  我这没API文档 也不大清楚 最关键的还是那个get()到底是多少不明白
回复 使用道具 举报
你就把abc看成一个整体吧,字符串数组 String[] str={"abc","cd","sfs"},以这个为例,你说第一个索引是什么啊,你添加abc不是分着添加的。add有参数啊,加我Q(1075577469),给你一份api文档。
回复 使用道具 举报
黄方 中级黑马 2012-2-28 17:14:50
7#

回帖奖励 +5

嗯,建议你多多看看API吧!
回复 使用道具 举报
杨盼 发表于 2012-2-28 16:06
你就把abc看成一个整体吧,字符串数组 String[] str={"abc","cd","sfs"},以这个为例,你说第一个索引是什么 ...

:'(哎 这个问题搞的我好纠结啊  :'( 求大家一起讨论啊
回复 使用道具 举报
房宝彬 黑马帝 2012-2-28 18:38:50
9#

回帖奖励 +5

拿15奖励来拉,哈哈
回复 使用道具 举报
刘峰 黑马帝 2012-2-28 18:41:20
10#

回帖奖励 +5

{:soso_e113:}拿分猛跑
回复 使用道具 举报
房宝彬 发表于 2012-2-28 18:38
拿15奖励来拉,哈哈

郁闷  来了也要回答问题啊
回复 使用道具 举报
刘峰 发表于 2012-2-28 18:41
拿分猛跑

郁闷啊 来了也要回答问题啊
回复 使用道具 举报
舞动的心弦 发表于 2012-2-28 17:14
嗯,建议你多多看看API吧!

怎么没人回答我的问题啊  :'(

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 可能是你的问题太幼稚。哈哈!.

查看全部评分

回复 使用道具 举报
黄秋 黑马帝 2012-3-1 01:39:38
14#

回帖奖励 +15

沙漠里的小鱼 发表于 2012-2-28 17:15
哎 这个问题搞的我好纠结啊   求大家一起讨论啊

别纠结,要勤查API,开卷有益!以下来自API:
getMethod(String name, Class<?>... parameterTypes)
          返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
参数:
name - 方法名
parameterTypes - 参数列表
返回:
与指定的 name 和 parameterTypes 匹配的 Method 对象

invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
参数:
obj - 从中调用底层方法的对象
args - 用于方法调用的参数
返回:
使用参数 args 在 obj 上指派该对象所表示方法的结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马