2013-04-26 32 views
12

ArrayListの次の2つの宣言の違いは何ですか?ArrayList <> vs ArrayList <Integer>

ArrayList<Integer> nunbers = new ArrayList<>(); 

ArrayList<Integer> nunbers = new ArrayList<Integer>(); 

は、それらの一方が他方よりも優先されていますか?

答えて

23

もう一つは「the diamond」と呼ばれたJava 7 <>で新しいもので、その型パラメータinferredを持っています。

また、type inference itself is not new in Javaにも注意してください。しかし、インスタンス化されている汎用クラスに対してそれを推論する機能は新しいものです。

Java SE 7より前のリリースのコンパイラは、ジェネリックメソッドと同様に、ジェネリックコンストラクタの実際の型パラメータを推測できます。ただし、Java SE 7以降のコンパイラでは、ダイヤモンド(<>)を使用すると、インスタンス化されるジェネリッククラスの実際の型パラメータを推測できます。

は、私は2番目の1は、おそらくあなたはそれが明確であることから、確認コードが唯一のJava 7で実行する必要が作る、とだけ冗長な情報を削減することができます限り、好ましいと思います。

3

Javaコンパイラのバージョンが1.7より下の場合、2番目のコンパイルはコンパイルされません。

2

最後のバージョンは、Javaバージョン7以降で使用できるショートカットです。

3

秒1は、コードの乱雑さを低減し、これはJava 7の新機能です。しかし、あなたのコードでは、インターフェイスListにコーディングすることができるので、実装ArrayListのタイプparamは推測されている

List<Integer> nunbers = new ArrayList<>(); 

されている必要があります。

2

あなたが空

それを左にすることができるもの <>に属して100%も明らかなようにJavaの7第二のものは、あなたが使用できるだけのショートカットであるため、彼らは、まったく同じコードにコンパイルされます
関連する問題