黑马程序员技术交流社区

标题: 高新技术中讲泛型的时候调用反射的一个问题 请教大家 [打印本页]

作者: 沙漠里的小鱼    时间: 2012-2-28 15:32
标题: 高新技术中讲泛型的时候调用反射的一个问题 请教大家
本帖最后由 沙漠里的小鱼 于 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")啊 谢谢大家
作者: 杨盼    时间: 2012-2-28 15:45
本帖最后由 杨盼 于 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));
作者: 沙漠里的小鱼    时间: 2012-2-28 15:51
杨盼 发表于 2012-2-28 15:45
我这里输出的是abc,这是正确的,再说collection3.getClass.getMethod("add",Object.class),这个里面Objec ...

谢谢 我知道方法名字的后面传递数据类名 因为方法名字有可能相同 用参数类型来区别到底是哪个方法 我的意思是add方法里面没有参数 所以就不要传递参数类型了  还有那个get(0)应该是a啊 get里面的参数是索引  结果不应该是abc啊  迷惑 求解答
作者: 杨盼    时间: 2012-2-28 15:55
你传递的是“abc”这是一个,字符串String str="abc",这样加入一个集合,然后输出还是abc,先回答这个,你那个“我的意思是add方法里面没有参数 所以就不要传递参数类型了”这句话是不是要把add置空啊?再说每个集合的add方法里面都有参数,不然怎么加入啊
作者: 沙漠里的小鱼    时间: 2012-2-28 16:01
杨盼 发表于 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()到底是多少不明白
作者: 杨盼    时间: 2012-2-28 16:06
你就把abc看成一个整体吧,字符串数组 String[] str={"abc","cd","sfs"},以这个为例,你说第一个索引是什么啊,你添加abc不是分着添加的。add有参数啊,加我Q(1075577469),给你一份api文档。
作者: 黄方    时间: 2012-2-28 17:14
嗯,建议你多多看看API吧!
作者: 沙漠里的小鱼    时间: 2012-2-28 17:15
杨盼 发表于 2012-2-28 16:06
你就把abc看成一个整体吧,字符串数组 String[] str={"abc","cd","sfs"},以这个为例,你说第一个索引是什么 ...

:'(哎 这个问题搞的我好纠结啊  :'( 求大家一起讨论啊
作者: 房宝彬    时间: 2012-2-28 18:38
拿15奖励来拉,哈哈
作者: 刘峰    时间: 2012-2-28 18:41
{:soso_e113:}拿分猛跑
作者: 沙漠里的小鱼    时间: 2012-2-28 18:56
房宝彬 发表于 2012-2-28 18:38
拿15奖励来拉,哈哈

郁闷  来了也要回答问题啊
作者: 沙漠里的小鱼    时间: 2012-2-28 23:57
刘峰 发表于 2012-2-28 18:41
拿分猛跑

郁闷啊 来了也要回答问题啊
作者: 沙漠里的小鱼    时间: 2012-2-29 18:58
舞动的心弦 发表于 2012-2-28 17:14
嗯,建议你多多看看API吧!

怎么没人回答我的问题啊  :'(
作者: 黄秋    时间: 2012-3-1 01:39
沙漠里的小鱼 发表于 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 上指派该对象所表示方法的结果





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