java吧 关注:1,236,059贴子:12,706,577
  • 7回复贴,共1

Java 每日一题:2016年8月28日

只看楼主收藏回复

每天在这里贴一道 Java 题。
问题不难,有 Java 的基本知识就可以做出来。
问题也不偏,日常工作中时不时会碰到。
每日一题索引页:52.36.153.52:8080/javaquestions/

我们知道,对 List 来说,尽管 Long 是 Number 的子类,但 List<Long> 却不是 List<Number> 子类。但对数组来说,Long[] 却是 Number[] 子类。
所以,注释 1 处的语句没有编译错误,但注释 3 处的语句有编译错误。看上去,数组比使用泛型的集合类型更合理、更方便。
把注释 3 和 4 处的语句注释掉,然后运行程序,看看会发生什么?
上面这道题来自《EffectiveJava》 这本书。我做了一点点改动。


1楼2016-08-28 12:08回复
    源程序:
    package javaquestions;
    import java.util.ArrayList;
    import java.util.List;
    public class JavaQuestion20160828
    {
    public static void main(String[] args)
    {
    Number[] numberArray = new Long[2]; // 1
    numberArray[0] = new Integer(5); // 2
    List<Number> numberList = new ArrayList<Long>(); // 3
    numberList.add(new Integer(5)); // 4
    }
    }


    2楼2016-08-28 12:08
    回复
      下载贴吧客户端发语音!
      涣迫诓撂幽凡浪栋匮


      来自Android客户端3楼2016-08-28 12:09
      回复
        这是因为泛形没有多态吧


        IP属地:江苏来自iPhone客户端6楼2016-08-28 12:21
        回复
          泛型多态要用限定符


          来自Android客户端7楼2016-08-28 12:51
          回复
            如果使用数组,编译时可以通过,但运行时会出异常;
            如果使用泛型List,编译时就不能通过。
            哪个好?当然是编译时出错比运行时出错好。


            8楼2016-08-29 00:33
            回复
              每日一题索引页访问不了


              9楼2016-08-31 10:51
              回复
                数组存储类型异常


                10楼2016-08-31 10:56
                回复