次の2行に違いはありますか
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
返信ありがとうございます
次の2行に違いはありますか
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
返信ありがとうございます
ほとんどの場合、最初のものよりも2番目のものが優先されます。2つ目は、コードの残りの部分に影響を与えることなく、canの実装を(たとえば)List
変更できるという利点があります。LinkedList
これは、どこにでも変更する必要があるだけでなく、特定の方法を使用した可能性があるためArrayList
、で行うのは困難です。ArrayList
LinkedList
ArrayList
可能な限り、特定の実装をインターフェイスの背後に隠すようにしてください。これを参照してください
それ自体はそれほど違いはありませんList
が、インターフェースであり、標準ライブラリのメソッドで一般的にパラメータがであることがわかるため、可能な限り使用する必要があります。これにより、またはList<K>
のような特定の実装を渡すことができます。ArrayList
LinkedList
List
後でインターフェースのみが必要になる限り、通常は後者が推奨されます。これは「実装ではなく、インターフェースへのプログラミング」と呼ばれます。
それらの詳細な違いについては、stackoverflowに関する別の質問で回答しました。CがJavaのAのサブクラスである場合の「Cc = newC()」と「Ac = newC()」の違いです。
2番目のアプローチは、実装をインターフェースの背後に隠すため、通常は推奨されるアプローチです。
つまり、後で要件が変更され、List
インターフェイスの別の実装が必要になった場合、1行のコードだけを変更でき、クラスではなくインターフェイスにコーディングしていたため、他のすべては引き続き機能します。
2つ目は Program to Interface
、その好ましい方法の例です。
詳細について「インターフェースにプログラムする」とはどういう意味ですか?