我知道不能从这样的接口(interface)创建对象:
List list2 = new List(); // error.
当我使用 Arrays.asList() 时,我很困惑,因为这个函数返回 List 并且以下代码完美运行:
List list1 = Arrays.asList("a","b","c"); // works perfectly
该等式的右侧返回 List。那么代码就变成List list1=new List();这怎么可能,以及这段代码如何工作,尽管右侧返回一个接口(interface),我不明白。你能解释一下吗? 提前致谢
最佳答案
Arrays.asList(...) 返回一个新的 ArrayList。
由于多态性,它可以声明它返回一个 List,然后返回任何实现 List 接口(interface)的内容。 ArrayList是一个列表,因此可以返回它。
额外注意:asList 使用的 ArrayList 实际上是在 Arrays 类中创建的,作为一个匿名类,它扩展了 ArrayList 类的功能以创建一个接受 native 数组的构造函数。
关于java - Arrays.asList ("") 返回 List 接口(interface),在这种情况下如何创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31570389/