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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. Map<String, String> map = new HashMap<String, String>();  
  2.         String key = "key";  
  3.         Integer val = new Integer(1);  
  4.         Method m = HashMap.class.getDeclaredMethod("put", new Class[] { Object.class, Object.class });  
  5.         m.invoke(map, key, val);  
  6.   
  7.         System.out.println(map); //{key=1}  
  8.         System.out.println(map.get(key)); // java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String  
  9.     }  
复制代码


这个是转自CSDN博客里一个人的说法和代码!很不错,解决了部分迷惑。
java泛型检查只在编译期有效,而反射是在运行期的调用机制。
用反射进行add,绕过了泛型检查;get时泛型会自动进行类型转换,从而导致了ClassCastException。


有更深入的讲解请大家回复我!!!!

评分

参与人数 1黑马币 +1 收起 理由
沉湎码海 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马