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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王自强 中级黑马   /  2012-9-14 14:23  /  1080 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. import java.util.*;
  2. import java.lang.reflect.*;
  3. class Test
  4. {
  5. public static void main(String[] args)
  6. {
  7. ArrayList<String> list = new ArrayList<String>();
  8. try
  9. {
  10. Method addMethod=list.getClass().getMethod("add", String.class);

  11. //这里的String.class会报告NoSuchMethodException,
  12. //为什么?泛型已定义好为String类型了啊
  13. addMethod.invoke(list, "zhangsan");
  14. addMethod.invoke(list, "lisi");

  15. System.out.println(list);
  16. }
  17. catch (NoSuchMethodException e)
  18. {
  19. e.printStackTrace();
  20. }
  21. catch(SecurityException e)
  22. {
  23. e.printStackTrace();
  24. }
  25. catch (IllegalAccessException e)
  26. {
  27. e.printStackTrace();
  28. }
  29. catch (IllegalArgumentException e)
  30. {
  31. e.printStackTrace();
  32. }
  33. catch (InvocationTargetException e)
  34. {
  35. e.printStackTrace();
  36. }
  37. }
  38. }
复制代码

1 个回复

倒序浏览
因为泛型到class之后的作用就消失了。method是从class获取的,无法获得String类型,所以会错,写成Object吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马