第2の方法のを超える第1の方法のような新しいアラリーリストを作成するのは実際にどのような違いがありますか? 作成時の考慮事項<type>新しいアラライストの作成と空のタイプの新しいアライラリスト<>
List<String> myList1 = new ArrayList<>();
List<String> myList1 = new ArrayList<String>();
第2の方法のを超える第1の方法のような新しいアラリーリストを作成するのは実際にどのような違いがありますか? 作成時の考慮事項<type>新しいアラライストの作成と空のタイプの新しいアライラリスト<>
List<String> myList1 = new ArrayList<>();
List<String> myList1 = new ArrayList<String>();
唯一の違いは、最初のものはダイヤモンド演算子を使用している、ということですこれはJava 7で導入されました。また、古いバージョンのJavaでは使用できません。
このコードは合法であるJavaのバージョン以外に違いはありません。それらの間の
List<String> myList1 = new ArrayList<>(); // works in Java 7+
List<String> myList1 = new ArrayList<String>(); // works in Java 5+
あなたはここで答えを見つけることができます:ジェネリッククラス のセクション型推論とインスタンス化でhttps://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.htmlをしかし、私はあなたのためにそれを引用しました:
あなたはコンストラクタを呼び出すために必要な型引数を置き換えることができますコンパイラとして と長い型パラメータ(<>)の空のセットを持つ汎用クラスの は、型引数をコンテキストから推論できます。この アングルブラケットのペアは、非公式にダイヤモンドと呼ばれています。 ...
Java 7以降では、最初のバージョンを使用してください。ダイヤモンドオペレーターが導入されたので、2番目のように自分自身を繰り返す必要はありません。 –
その重複については、タイトルは関係していますが、質問の実際の理由は、 '<>'と '<>' vs ''ではなく、生の型を使用する理由です。 –
右。 @JordiCastillaがなぜそれを重複としてマークしたのか分かりません – Nimrod