本帖最后由 笑脸迷人 于 2014-8-30 19:25 编辑
请看代码:求解释代码中11行的注释,以及19行的异常的发生(貌似11行代码注释给了解释,但11为什么不报错~)- import java.util.ArrayList;
- public class GenericDemo {
- public static void main(String[] args)
- {
- ArrayList<Integer> a=new ArrayList<Integer>();
- ArrayList a2=a;//使用原始类型ArrayList的引用变量指向这个参数化类型ArrayList<Integer>
- a.add(1);
- a2.add("abc");//添加String类型
- System.out.println(a.get(0));//1
- //Integer i=a.get(1);类型转换异常
- System.out.println(a.get(1));//abc
- /*为什么能打印出来,按理get方法的返回值是泛型类类型Integer,但a.get(1)的实际返回值确是String,为什么不爆类型转换异常*/
- System.out.println(a);//[1, abc]
-
- ArrayList<String> v=new ArrayList<String>();
- ArrayList v2=v;//使用原始类型ArrayList的引用变量指向这个参数化类型ArrayList<Integer>
- v2.add(1);
- v.add("abc");//添加String类型
- System.out.println(v.get(0));//报java.lang.ClassCastException错误
- System.out.println(v.get(1));
- System.out.println(v);
- }
- }
复制代码
这个问题其实在我的另外的一个帖子里提到;只是很多人看到前面的分享部分就没看下去;在这里特别提出来,是这个问题真的困扰了很久,非常希望得到解决!若对部分泛型代码不理解,请看http://bbs.itheima.com/thread-140070-1-1.html
|
|