本帖最后由 袁冬梅 于 2012-4-27 20:25 编辑
张老师说泛型只是给编译器看的,通过反射可以避开泛型,也就是说带了泛型限定的集合只是傲娇于表面,其实,骨子里它还是神马都可以装。
于是我也兴致勃勃的跟着老师走一遍小代码,不过我高兴太早了!!!!!!!!!!看到运行结果我差点吐血✖_✖。
请看下面代码块,第一段是老师的结果正确,第二个是我走的,结果类型不匹配,OTZ,所以说,我这是怎样的RP啊!
后来我又试了试其它类型的泛型参数。都可以得到结果,只是改成String它就给我傲娇,编译给你通过,运行时给你报错 = =。
所以,大家帮我看看这是怎么回事吧?照老师的来说,应该是不会出现这样的问题的呀,挠头。。。- ArrayList<Integer> al = new ArrayList<Integer>();
- al.getClass().getMethod("add", Object.class).invoke(al, "abc");
- System.out.println(al.get(0));
- //结果:abc
- ArrayList<String> al = new ArrayList<String>();
- al.getClass().getMethod("add", Object.class).invoke(al, 69);
- System.out.println(al.get(0));
- //报错:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
复制代码 |