A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2、 ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
这道题:肯得少写了泛型标志。应该是ArrayList<Integer> list = new Arraylist<Integer>();
这个还好说,下面这个就要命了

1. 分析运行结果,说明原理。(没有分析结果不得分)
        import java.util.ArrayList;
        class Data {
            int val;
        }
        public class Test {
                  public static void main(String args[]) {
                           Data data = new Data();
                                                   ArrayList list = new ArrayList();
                   for (int i = 100; i < 103; i++) {
                           data.val = i;
                           list.add(data);
                   }
                    for (Data d : list) {
                          System.out.println(d.val);
                   }
             }
      }
我感觉应该考的是:集合存储的是对象引用,所以答案的112,112,112  但是这段代码根本编译不过。因为 ArrayList list = new ArrayList()还是没有泛型。他是故意让这道题编译不过还是,又忘了写泛型。而且前者都不怎么用分析,这要怎么做。

11 个回复

倒序浏览
   建立楼主分两种情况进行解答,
   一种情况是原题所能得到的答案,
   一种情况是楼主认为有错误地方更正后所得到的答案,

希望能帮到你
回复 使用道具 举报
仔细想是有写问题,意会精神就好了!
回复 使用道具 举报
江夷 发表于 2014-6-11 21:24
建立楼主分两种情况进行解答,
   一种情况是原题所能得到的答案,
   一种情况是楼主认为有错误地方更 ...

有道理
回复 使用道具 举报
有点转牛角尖了吧……
第一道题后面说了泛型是Integer了啊,这是题目,不是程序,题目要求很明确啊,考的就是对泛型和反射的理解
第二道题,你确定编译不过?泛型的作用是增加安全性,把运行时候可能的错提到编译阶段,不加泛型编译器才不管呢,只会给你一个友好提示,以前没有泛型,程序不照样跑,出现新功能的版本肯定得向下兼容的,而且老毕的视频中,一开始不都没有加泛型嘛。
ps:开发的时候,我们当然要考虑到方方面面,加泛型提高代码的安全性,健壮性;但是考试嘛,呵呵,我们得揣测出题人的意图,^^
回复 使用道具 举报
我做入学测试的时候有一到跟lz第一题一样的题,里面有标注泛型,不知道为啥lz这个没有。

回复 使用道具 举报
进来看看也是!
回复 使用道具 举报
我现在也遇到这个问题了
回复 使用道具 举报
学习学习。。。现在还不懂。
回复 使用道具 举报
我自己想了下原因,ArrayList list = new ArrayList();list集合里存储了对象的引用,从list里面遍历对象时,需要对遍历的对象进行强制转换,因为我们知道对象是Data类型的,但是程序不知道啊,程序返回的对象类型是Object类型,所以需要强转
回复 使用道具 举报
第二,就算结果都转成Data类型,取出来的值应该都是102,而不是112吧
回复 使用道具 举报
rao 高级黑马 2014-8-17 07:00:04
12#
我来潜水的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马