开发者社区 问答 正文

ArrayList的实现与List接口如何理解

有一个方法这样写是正确的:

public static List<List<Integer>> function(){
        List<List<Integer>> list = new ArrayList<List<Integer>>();
        return list;
    }

但是以下会报错:

public static List<List<Integer>> function(){
        List<List<Integer>> list = new ArrayList<ArrayList<Integer>>(); //报错
        return list;
    }

以下也报错:

public static List<List<Integer>> function(){
        ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); 
        return list;//报错
    }

List接口和ArrayList的实现如何理解?

展开
收起
蛮大人123 2016-02-29 17:41:30 2543 分享 版权
2 条回答
写回答
取消 提交回答
  • ArrayList已经继承实现了LIst接口的类
    2019-07-17 18:50:42
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪

    这个和 Arraylist实现, List接口没有关系.

    Effective Java 2nd, item25:

    Generics, by contrast, are invariant: for any two distinct types Type1
    and Type2, List is neither a subtype nor a supertype of

    List [JLS, 4.10; Naftalin07, 2.5].

    为了防止下面的情况:
    `// Won't compile!
    List

    2019-07-17 18:50:42
    赞同 展开评论
问答标签:
问答地址: