java – 这两个代码片段之间是否有区别,如果是这样的话?

参见英文答案 >
What is the difference between List and ArrayList?                                     1个

>            
What is a raw type and why shouldn’t we use it?                                    14个

>            
What does it mean to “program to an interface”?                                    31个

所以我似乎无法弄清楚这两个代码片段之间的区别,或者当一个代码片段优先于另一个代码片段时.

片段#1

  public static void main(String[] args) {
           List testList = new ArrayList();
           testList.add(new Integer(6));

           String string = (String) testList.get(0);
     }

小片#2

public static void main(String[] args) {
       ArrayList testList = new ArrayList();
       testList.add(new Integer(6));

       String string = (String) testList.get(0);
   }

我的解释是,在代码片段1中,名为testList的List被分配给ArrayList对象.在代码段2中,名为testList的ArrayList被分配给ArrayList对象.然而,这对我来说没有意义.

附带问题:两者中的一个是首选标准吗?

最佳答案 第一个片段使用接口List类型,第二个片段使用对象类型ArrayList.

除非您确实需要来自ArrayList的任何方法,否则您应该使用接口类型来防止对类型的混淆.

点赞