java - 创建一个新的对象数组列表——Java中的初始化

标签 java arraylist

我注意到,当我创建任何特定类型对象的数组列表时,我需要像这样初始化它:

List<Object> objectList = new ArrayList<Object>();

为什么我必须初始化包含对象的右侧?即,为什么我不能在不再次识别 Object 类的情况下初始化它? - 喜欢

List<Object> objectList = new ArrayList<>();

如果可以,为什么我可以这样做以及这样做的好处(或损失)是什么?

我对此进行了研究,我唯一发现的是包括第二个对象在内的初始化。我想知道这种结构方式的“原因”。

我知道(现在)这个问题有一个明确的答案(我在这里找到了 What is the point of the diamond operator in Java 7? ),但我留下了这个,因为在不知道术语“钻石运算符”的情况下研究非常困难.

最佳答案

它们完全一样;如果你什么都不放,它将使用声明类。它通常被称为菱形运算符(您可以查一下),尽管它不是一个运算符。

基本上,如果将其保留为空,并且它不是匿名内部类(这将在 Java 9 中修复),它将使用声明类作为实例化类。由于泛型不是协变的,这通常就是您想要的。

PS。它是在 Java 7 中引入的,如果您使用的是旧版本,则需要将类添加到尖括号内。

PPS。 Here's您需要了解的一切;)

关于java - 创建一个新的对象数组列表——Java中的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524217/

相关文章:

java - 这个程序中正确的 Big-O 值是什么?

java - Java中基于属性的压缩ArrayList

java - 根据键返回列表过滤HashMap

java - 如何从数组/ArrayList中获取特定元素?

java - 多个列表或列表和 getSublist() (Java)

java - 如何在 Java 中循环遍历 2D ArrayList 并填充它?

java - 在 Java 中将 Complex 转换为 ArrayList<Float>

java - 从 java 轮询 NFS 共享会破坏文件系统

java - 如何使用多维数组列表?

java - 基本安卓: how to handle isPressed action on a button in Android