实例化用户定义类型集合的约定是什么?

2022-09-04 01:38:54

我有一个名为Matchline的类

    public class MatchingLine implements Comparable
     {
        private String matchingLine;
        private int numberOfMatches;

        // constructor...
        // getters and setters...
        // interface method implementation...
     }

我在ArrayList中使用这个类,如下所示 -

    ArrayList<MatchingLine> matchingLines = new ArrayList<MatchingLine>();

但是,Netbeans IDE 在此语句旁边放置了一个注释,并说:

   redundant type arguments in new expression (use diamond operator instead)

它建议我使用 -

    ArrayList<MatchingLine> matchingLines = new ArrayList<>();

我一直以为以前的风格是惯例?后一种风格是惯例吗?


答案 1
ArrayList<MatchingLine> matchingLines = new ArrayList<>();

这是 Java 7 中一个称为菱形运算符的新功能。


答案 2

正如Eng所提到的,这是Java 7的一个新功能。

它的编译方式与指定了所有类型参数的完全声明语句的编译方式没有什么不同。这只是Java试图减少您必须输入的所有冗余类型信息的一种方式。

在诸如(仅用于说明;回调最广为人知的是接口):

Callback<ListCell<Client>,ListView<Client>> cb = new 
    Callback<ListCell<Client>,ListView<Client>>();

对于读者来说,在这个非常冗长的声明中,类型是显而易见的。实际上,类型声明过多,使代码的可读性降低。因此,现在编译器能够简单地将类型推断与菱形运算符结合使用,从而允许您简单地使用:

Callback<ListCell<Client>,ListView<Client>> cb = new Callback<>();