6

次の2行に違いはありますか

 ArrayList<String> arrName =  new ArrayList<String>();
 List<String>      arrName =  new ArrayList<String>();

返信ありがとうございます

4

6 に答える 6

4

ほとんどの場合、最初のものよりも2番目のものが優先されます。2つ目は、コードの残りの部分に影響を与えることなく、canの実装を(たとえば)List変更できるという利点があります。LinkedListこれは、どこにでも変更する必要があるだけでなく、特定の方法を使用した可能性があるためArrayList、で行うのは困難です。ArrayListLinkedListArrayList

于 2013-02-20T07:51:40.220 に答える
3

可能な限り、特定の実装をインターフェイスの背後に隠すようにしてください。これを参照してください

于 2013-02-20T07:54:58.300 に答える
2

それ自体はそれほど違いはありませんListが、インターフェースであり、標準ライブラリのメソッドで一般的にパラメータがであることがわかるため、可能な限り使用する必要があります。これにより、またはList<K>のような特定の実装を渡すことができます。ArrayListLinkedList

于 2013-02-20T07:53:05.123 に答える
2

List後でインターフェースのみが必要になる限り、通常は後者が推奨されます。これは「実装ではなく、インターフェースへのプログラミング」と呼ばれます。

それらの詳細な違いについては、stackoverflowに関する別の質問で回答しました。CがJavaのAのサブクラスである場合の「Cc = newC()」と「Ac = newC()」の違いです。

于 2013-02-20T07:50:31.023 に答える
2

2番目のアプローチは、実装をインターフェースの背後に隠すため、通常は推奨されるアプローチです。

つまり、後で要件が変更され、Listインターフェイスの別の実装が必要になった場合、1行のコードだけを変更でき、クラスではなくインターフェイスにコーディングしていたため、他のすべては引き続き機能します。

于 2013-02-20T07:50:42.637 に答える
2

2つ目は Program to Interface、その好ましい方法の例です。
詳細について「インターフェースにプログラムする」とはどういう意味ですか?

于 2013-02-20T07:55:46.960 に答える