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

© Friendy89 中级黑马   /  2013-8-30 22:35  /  1225 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Friendy89 于 2013-8-31 08:00 编辑

往Integer类型的集合中存放String类型的元素在getMethod的参数类型那里为什么用的是Object.class,而不是String.class,
  1. import java.lang.reflect.Method;
  2. import java.util.ArrayList;
  3. public class Test04 {

  4. /**
  5. * @param args
  6. * @throws Exception
  7. * @throws SecurityException
  8. */
  9. public static void main(String[] args) throws Exception {
  10. // TODO Auto-generated method stub
  11. ArrayList<Integer> list = new ArrayList<Integer>();
  12. Method method = list.getClass().getMethod("add", Object.class);//<FONT color=red>这里用String.class为什么会错,为什么要用Object.class,依据是什么</FONT>
  13. method.invoke(list, "itcast");
  14. System.out.println(list);
  15. }

  16. }
复制代码

6 个回复

倒序浏览
父类引用指向子类对象 !
回复 使用道具 举报
范龙波 发表于 2013-8-30 23:53
父类引用指向子类对象 !

为什么用String就会错,按道理,它传进去的就是String类型的对象啊
回复 使用道具 举报
泛形只对<>里面的类型有效,父类子类都不行除非你声明为<? extends Object>,但这样就失去了泛开的意义
回复 使用道具 举报
java.lang.NoSuchMethodException: java.util.ArrayList.add(java.lang.String)
不存在ArrayList.add(String)
反射调用只能ArrayList.add(E e),E就是Object
回复 使用道具 举报
Friendy89 发表于 2013-8-31 00:03
为什么用String就会错,按道理,它传进去的就是String类型的对象啊





回复 使用道具 举报

原来是这样,谢了哥们,辛苦了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马