次のように ArrayList をポリモーフィックにインスタンス化する必要があることをどこかで読みました。
List myList = new ArrayList();
しかし、私が使用する場合
ArrayList myList = new ArrayList();
このアプローチでは、入力するとより多くのメソッドを表示できますmyList.(ctrl+space)
それらの違い(長所と短所)について教えてください
通常、インターフェイスにコーディングする理由は、後で使用する具体的なクラスを交換できるようにするためです。たとえば、メモリの断片化/再割り当ての問題を発見したためArrayList
にスワップする必要がある場合。LinkedList
インターフェイスにコーディングし、List
これらの具象クラスの両方がList
.
インターフェイスにないメソッドのいずれかを使用する必要がある場合は、宣言を変更してそのメソッドを使用しても問題ありません。その場合、コードを、さまざまなクラスによって実装されるインターフェイスではなく、特定の具象クラスに緊密に結合していることに注意する必要があります。ArrayList
List
ArrayList
List
あなたのデフォルトの位置は、インターフェイスにコーディングすることです。これにより、最大の柔軟性/最小の結合が得られます。しかし、それは、必要なときにクラスを直接使用しないという意味ではなく、可能な限り柔軟に始めるということです。
あなたが提案するアプローチを使用すると、コンテナの特定の実装に固執することになりますが、これは多くの状況では良くありません。にのみ存在するメソッドを使用する必要がある場合は、2つのArrayList
オプションがあります。myList
ArrayList
myList
ArrayList