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

时间:2012-04-09 15:23:32

标签: java list coding-style netbeans-7 java-7

我有一个名为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<>();

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

2 个答案:

答案 0 :(得分:21)

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

这是Java 7中的一项名为diamond operator的新功能。

答案 1 :(得分:1)

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

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

在诸如(仅用于说明; Callback最为人所知的接口)的声明中:

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

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

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