0

次のように ArrayList をポリモーフィックにインスタンス化する必要があることをどこかで読みました。

List myList = new ArrayList();

しかし、私が使用する場合

ArrayList myList = new ArrayList(); 

このアプローチでは、入力するとより多くのメソッドを表示できますmyList.(ctrl+space)

それらの違い(長所と短所)について教えてください

4

2 に答える 2

4

通常、インターフェイスにコーディングする理由は、後で使用する具体的なクラスを交換できるようにするためです。たとえば、メモリの断片化/再割り当ての問題を発見したためArrayListにスワップする必要がある場合。LinkedListインターフェイスにコーディングし、Listこれらの具象クラスの両方がList.

インターフェイスにないメソッドのいずれかを使用する必要がある場合は、宣言を変更してそのメソッドを使用しても問題ありません。その場合、コードを、さまざまなクラスによって実装されるインターフェイスではなく、特定の具象クラスに緊密に結合していることに注意する必要があります。ArrayListListArrayListList

あなたのデフォルトの位置は、インターフェイスにコーディングすることです。これにより、最大の柔軟性/最小の結合が得られます。しかし、それは、必要なときにクラスを直接使用しないという意味ではなく、可能な限り柔軟に始めるということです。

于 2013-02-10T09:56:08.173 に答える
0

あなたが提案するアプローチを使用すると、コンテナの特定の実装に固執することになりますが、これは多くの状況では良くありません。にのみ存在するメソッドを使用する必要がある場合は、2つのArrayListオプションがあります。myListArrayListmyListArrayList

于 2013-02-10T09:57:33.670 に答える