黑马程序员技术交流社区

标题: 一道入学考试题 [打印本页]

作者: 文尐    时间: 2015-9-18 13:44
标题: 一道入学考试题
3、 ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。

此题是不是不可以的啊    感觉怪怪的     高手给个回答
作者: 13706649811    时间: 2015-9-18 15:35
通过反射
作者: 木木三    时间: 2015-9-18 16:21
按楼上说的,通过反射绕过泛型限定调用add方法添加。
作者: qq491786119    时间: 2015-9-18 23:15
通过反射import java.lang.reflect.Method;
import java.util.ArrayList;
public class Hm_Test1 {
        public static void main(String[] args) throws Exception{
                ArrayList<Integer> a=new ArrayList<Integer>();
                a.add(1);
                Method m=a.getClass().getMethod("add",Object.class);
                m.invoke(a,"Hello");
                System.out.println(a);
        }

}
作者: 盖世神功    时间: 2015-9-18 23:42
通过反射跳过编译时候的类型检查
作者: 沙鹰    时间: 2015-9-19 08:47
我也不会,不过看到高手回复,我也学习了。感谢楼主
作者: xiao_D    时间: 2015-9-19 09:02
给力 学习了一下

作者: sxwnzbn    时间: 2015-9-19 09:13
用反射来做
作者: 程序猿小哲    时间: 2015-9-19 10:24
楼下评论亮了,真有帮助啊~~~学习了,谢谢!!!
作者: sniper170fly    时间: 2015-9-19 11:32
学习了,反射那一章我也不懂。
作者: super_qilin    时间: 2015-9-19 16:20
反射一知半解,没学懂。。。
作者: lion_good    时间: 2015-9-19 16:24
在运行期是不存在泛型的,编译期只要通过编译器检查即可.
  1. ArrayList<Integer> list = new ArrayList<Integer>();
  2. ArrayList li = list;
  3. li.add("bad");
  4. System.out.println(list.get(0));
复制代码

作者: marcojam    时间: 2015-9-19 18:24
4楼正解,刘意的视频有讲
作者: heshiwei    时间: 2015-9-19 18:28
当然是不可以了,不然还要什么泛型??
作者: ln0491    时间: 2015-9-19 18:44
学习了。。。。。。。。。。
作者: 1406046710    时间: 2015-9-19 22:31
还没学到反射
作者: 召唤吧Bymax    时间: 2015-9-19 22:37
仅表示不 完全看不懂的节奏
作者: 往事如风555    时间: 2015-9-19 23:54
搞不懂怎么做的
作者: 193936696    时间: 2015-9-20 01:00
学习了~~
作者: cloud1991    时间: 2015-9-20 09:50
学习了,反射还没看到
作者: pengwei1989    时间: 2015-9-20 10:40
还处于看不懂的阶段




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