私はJavaを初めて使用しています。 私はとの違いを知りたい:ありがとうJavaのListまたはArrayListの宣言の違いは何ですか?
答えて
最初のものは、Java 7以降のみ有効で、かつある
List<String> list = new ArrayList<>();
と
ArrayList<String> list = new ArrayList<String>();
と
ArrayList<String> list = new ArrayList<>();
を
List<String> list = new ArrayList<String>();
それはちょうど、それほど冗長です。
ArrayList<String> list = new ArrayList<String>();
に相当する2つ目に、したがって厳密に等価である第一、同じ
。
あなたは、次の質問への回答で述べた理由のために、最初のものを好む必要があります。List versus ArrayList as reference type?
の発言には、2つのポイントがここにあります
1.新しいJava 7ダイヤモンド演算子は、あなたが可能に型パラメータを両側で指定せずにジェネリッククラスをインスタンス化する。したがって、これらの二つは等価です:
ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list = new ArrayList<>();
2.より多くの重要なポイントは、最初の2つのインスタンス間の差です。もう一つは明確である:最初の一
ArrayList<String> list = new ArrayList<String>();
:
List<String> list = new ArrayList<>();
あなたはArrayList
がList
のサブタイプであるため、割り当てが有効であるという事実を使用しています。しかし、新しいlist
オブジェクトの上にあなただけの(あなたのオブジェクトは、すべての後にList
として宣言されているため)List
に含まれているメソッドのサブセットを持っていますが、ArrayList
に存在する実装と。これは、オブジェクト指向プログラミングでは多態性と呼ばれ、さまざまな機能を提供するために、親が期待される親ではなく、クラスのサブタイプを使用することができます。
3は、やや等価です:上記で
List<String> list = new ArrayList<>();
、あなたがString
要素を含んでおり、具体的なクラスArrayList
とそれをインスタンス化しますList
インタフェースを実装する変数を宣言しています。また、Java 7の新しいダイヤモンド構文を使用しています。<>
の間にString
を再度書き込む必要はありません。上記で
ArrayList<String> list = new ArrayList<String>();
、あなたはString
要素が含まれ、そしてあなたがString
タイプを指定することを義務付け、「伝統的な」構文を使用して、具体的なクラスArrayList
とそれをインスタンス化します具象クラスArrayList
の変数を宣言しています<>
の間。上記で
ArrayList<String> list = new ArrayList<>();
、あなたはString
要素が含まれており、具体的なクラスArrayList
とそれをインスタンス化します具象クラスArrayList
の変数を宣言しています。また、Java 7の新しいダイヤモンド構文を使用しています。<>
の間にString
を再度書き込む必要はありません。
は、ダイヤモンドの構文(<>
が)だけがジェネリックをインスタンス化するための従来の構文(<the-type>
)を使用して立ち往生しているJavaの以前のバージョンのため、上記のJava 7で動作しますので注意してください。
最後の2つの形式は完全に同等です。 list
変数がList
タイプで、タイプがArrayList
でないことを指定しているため、最初のフォームは少し異なります。良いオブジェクト指向のプラクティスではprogram to an 'interface', not an 'implementation'を指定する必要があるため、これが好ましいフォームです。
- 1. Java ArrayList宣言
- 2. ListとArrayListの違いは何ですか?
- 3. list [-1:] [0]とlist [len(list)-1]の違いは何ですか?
- 4. これら2つの宣言の違いは何ですか?
- 5. ArrayList <?>、ArrayList、ArrayList <Object>の違いは何ですか?
- 6. List対ArrayListとは何ですか?
- 7. 変数の宣言と宣言の間に違いはありますか?
- 8. ArrayList al = new ArrayList()の違いは何ですか? and ArrayList al = new ArrayList(0)?
- 9. cのこれらの2つの宣言の違いは何ですか?
- 10. Objective-Cでの静的変数宣言の違いは何ですか?
- 11. これらの2つのポインタ宣言の違いは何ですか?
- 12. JavaScriptのこれら2つの関数宣言の違いは何ですか?
- 13. Pythonのこれら2つの配列宣言の違いは何ですか?
- 14. コンストラクタのnewとメンバー宣言のnewの違いは何ですか?
- 15. PowerShellのPARAM宣言案の違いは何だ
- 16. LinkedListの二重リンクリストとJavaのarrayListの違いは何ですか?
- 17. 多態性: "ArrayList list = new ArrayList"の代わりに "List list = new ArrayList"を使用するのはなぜですか?
- 18. pythonでmap(func、list)と[func(x)in listのxの違いは何ですか]
- 19. これら2つの配列宣言の違いは何ですか?
- 20. これらの宣言の技術的な違いは何ですか?
- 21. XMLの "処理命令"と "宣言文"の違いは何ですか?
- 22. mainクラスまたはmainメソッドで配列を宣言することの違いは何ですか?
- 23. あなた自身の言葉で、JavaFXとJavaアプレットは何ですか?彼らの違いは何ですか?
- 24. インデックスを一緒に宣言するか別々に宣言するか、違いは何ですか?
- 25. python 3のiterableとlistの違いは何ですか?
- 26. アンドロイド:ArrayListを宣言
- 27. 宣言型プログラミングと命令型プログラミングの違いは何ですか?
- 28. Javaは:1つの宣言でJavaで
- 29. C#のArrayListとHashtableの違いは何ですか?
- 30. 2つ以下の宣言に違いはありますか