java - Arrays.asList ("") 返回 List 接口(interface),在这种情况下如何创建对象?

标签 java arrays collections

我知道不能从这样的接口(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/

相关文章:

java - Servlet 过滤器(参数到属性)

java - 同一个地方的经度和纬度点变化

c - 从文件读入数组并使用数组中的数字执行操作

javascript - 数组上的Reduce方法——它是如何工作的?

c - 在C中将文本文件读入二维数组

java - super 和 extends 的行为方式相同

java - ActionBarActivity 无法解析为类型,Jar 不匹配 : Eclipse

Java:如何在 RecyclerView Adapter 中设置 ContextCompat 的上下文?

java - 异常.getmessage() 返回 null

java - 在 Collection 选择方面需要一些帮助