0
List<Kevin> kevin = new ArrayList<Kevin>();

ケビン型のオブジェクトのリストがありますが、メソッドに渡すものに違いはありますか?.

void method1(List<Kevin>)

void method2(ArrayList<Kevin>)

両方が機能しているようですが、メソッド1にアクセスできること以外に違いはありますか?オブジェクトを送信する必要があるかどうかはわかりません。List interface related methodsarray list related methods on method2.ListArrayList

4

4 に答える 4

3

どちらも同じように動作します。一般的に、可能であればインターフェイスにコーディングすることをお勧めします 。メソッドが の場合にのみ適切に機能する場合は、それで十分ですが、それ以外の場合は、呼び出し元を制限して.List<Kevin>Iterable<Kevin>ArrayList<Kevin>ArrayList

于 2013-05-03T19:39:19.040 に答える
1

ListArrayList を渡すと、気が変わって後で別の種類を使用することが妨げられます (または、少なくとも難しくなります) 。なぜなら、単に ではなくmethod2()タイプのリストに依存するからです。ArrayListList

渡すことができる他の List 実装にはLinkedListCopyOnWriteArrayListArrays.asList()Collections.synchronizedList()、または、しばしばCollections.unmodifiableList().

したがって、ベスト プラクティスは、インターフェイスでプログラムし、a List(またはCollection呼び出しIterableメソッドがリストであると想定する必要がない場合はまたはまたは) を渡すことです。

同じクラス内のプライベート メソッドの場合は、それほど重要ではありません。しかし、メソッドがパブリック API の一部である場合、ArrayList を渡すと、ある時点で本当に害を及ぼす可能性があります。

于 2013-05-03T19:43:18.523 に答える