4

を初期化する際の次の 2 つのステートメントの違いは何ArrayListですか?

ArrayList<String> a = new ArrayList<String>();
ArrayList<String> a = new ArrayList<>();
4

4 に答える 4

13

Java 1.7 より前では、次のもののみが許可されています。

ArrayList<String> a = new ArrayList<String>();

そして 1.7 では、これが追加されました。これは同じですが、より短いものです: (すべてのプログラマーは怠け者です)

ArrayList<String> a = new ArrayList<>();
于 2013-07-11T10:42:22.467 に答える
4

後者は、Java 7 で導入された推論された型を使用します。Java 1.7 より前のコレクションでは構文 (ひし形演算子として知られています) は違法であるため、以前のバージョンでは前者が使用されます。

ダイヤモンド演算子は、宣言の冗長性を減らします。

于 2013-07-11T10:41:54.660 に答える
3

違いはありません。2 番目のオプション (Diamond Operator と呼ばれる) はショートカットです。コンパイラは、ジェネリック ArrayList の型パラメーターが String でなければならないと推論します。

于 2013-07-11T10:42:05.843 に答える
0

2 番目のオプションは、Java 7 で導入された概念 (推論された型) を使用するものでした。それとは別に、Java 7 を使用していると仮定すると、2 つの呼び出しの効果は同じになるはずです。以前の Java バージョンでは、コードの 2 番目のバージョンを使用できません。

于 2013-07-11T10:42:12.700 に答える