質問: new arraylist<?>(); (1)では、listインターフェースの実装を入れ替えることができます。 (1)は通常、必要性に関係なくアプリケーションで使用されているようです(私自身は常にこれを使用しています)。誰かが(2)を使っているのかどうか疑問に思いますか?また、実際には(2)に対して(1)を使用することが実際にどのくらいの頻度で(そして例を挙げてください)(つまり、(2)では足りない場合があります。)_をインタフェースにコーディングおよびbest practiceなど)
回答: listインターフェースには、いくつかの異なるクラスがあります - arraylistとlinkedlist。 linkedlistはインデックス付きコレクションを作成するために使用され、arraylist - ソートされたリストを作成するために使用されます。それで、あなたはそれを引数に使うことができますが、あなたが使うものだけではなく、あなたのコードやライブラリなどを使う他の開発者が異なる種類のリストを使うことを許可することができます。arraylist<object> mymethod (arraylist<object> input) { // body } arraylistではなくlinkedlistでのみ使用できますが、メソッドが使用されている他の場所ではlistクラスのいずれかを使用することができます。これは単なる選択であるため、インターフェイスを使用すると許可できます。list<object> mymethod (list<object> input) { // body } このメソッドの引数では、使用したいlistクラスをどれでも使用できます。list<object> list = new arraylist<object> (); list.add ("string"); mymethod (list); 結論: 可能であればどこでもインターフェースを使用してください。あなたや他の人が使用したい異なる方法を使用するように制限しないでください。