我注意到,当我创建任何特定类型对象的数组列表时,我需要像这样初始化它:
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/