我有一个名为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<>();
我一直认为前一种风格是惯例?后一种风格是惯例吗?
答案 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<>();