黑马程序员技术交流社区

标题: 泛型的一个小问题 [打印本页]

作者: 柏涛    时间: 2014-2-9 18:46
标题: 泛型的一个小问题
本帖最后由 柏涛 于 2014-2-9 20:51 编辑

为什么下面的结果一个为真,一个为假?

public class Demo23 {
public static void main(String[] args) {
ArrayList<Integer> collection2 = new ArrayList<Integer>();   
//System.out.println(collection1.getClass()==collection2.getClass());   
collection2.add(“真暴力”);   
collection2.getClass().getMethod("add", Object.class).invoke(collection2, "真暴力");   
System.out.println(collection2.get(0));


作者: itpower    时间: 2014-2-9 19:01
collection1在哪里?木有看到啊!
作者: 柏涛    时间: 2014-2-9 20:50
itpower 发表于 2014-2-9 19:01
collection1在哪里?木有看到啊!

collection1那句话忘记注释掉了   不影响做题的
作者: 糖伯貓    时间: 2014-2-9 21:00
这个是暴力反射吧,突破编译器的类型限定 ,什么一个为真一个为假啊?我表示没看懂楼主的意思啊
作者: 未烧开的白开水    时间: 2014-2-11 15:44
问题不明确啊,还有泛型使用有误吧,Integer里不能放字符串吧~
作者: wq10zj    时间: 2014-2-11 19:27
public class Demo23 {

public static void main(String[] args) {
ArrayList<Integer> collection2 = new ArrayList<Integer>();   
//System.out.println(collection1.getClass()==collection2.getClass());   
collection2.add(“真暴力”);
/类对象获取class字节码   collection2.getClass().是获取一个class对象 获取add方法  
//Object.class被泛型限定Integer类
//调用invoke方法应是Method 类  这样写很模糊  因为有可能中间涉及类型强转  
collection2.getClass().getMethod("add", Object.class).invoke(collection2, "真暴力");  
//假暴力?
System.out.println(collection2.get(0));





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