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

これは、と呼ばれるJava7の新機能ですdiamond operator

于 2012-04-09T15:24:58.040 に答える
1

Eng が述べたように、これは Java 7 の新機能です。

これは、指定されたすべての型パラメーターを使用して完全に宣言されたステートメントと同じようにコンパイルされます。これは、Java が入力しなければならないすべての冗長な型情報を削減しようとする 1 つの方法にすぎません。

次のようなステートメントでは (説明のためだけに、Callback はインターフェイスとして最もよく知られています):

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 に答える