14

我有一个名为 MatchingLine 的课程

    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<>();

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

4

2 回答 2

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

这是 Java 7 中的一个新特性,称为diamond operator.

于 2012-04-09T15:24:58.040 回答
1

正如 Eng 所说,这是 Java 7 的一个新特性。

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

在这样的声明中(仅用于说明;回调最为人所知的是接口):

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

读者很清楚这个冗长的声明中的类型是什么。事实上,类型声明过多,使代码的可读性降低。因此,现在编译器能够简单地结合使用类型推断和菱形运算符,让您可以简单地使用:

Callback<ListCell<Client>,ListView<Client>> cb = new Callback<>();
于 2013-06-01T15:28:34.333 回答