黑马程序员技术交流社区
标题: 泛型的一个小问题 [打印本页]
作者: 柏涛 时间: 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
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 |