2011-11-13 8 views
0

インタフェースのインスタンスを作成することはできません。Javaでインスタンスを返す

なぜJava APIでArrays.asList(Object[] a)が返されるのですか?ListListはインタフェース)を返しますか?

ありがとうございました!

答えて

2

一般にJavaプログラミングとOOOプログラミングでは、オブジェクトの使用方法(オブジェクトのインタフェース)を定義できるため、ライブラリ実装者のみが実際の動作の詳細を心配する必要があります。そのため、クラスそのものを返すのではなく、インターフェイスだけを返すのがよい習慣である理由は、メンテナンス性の向上に加えて、アプリケーションのテストをコーディングする際にモックやスタブオブジェクトを使用できるようにするためです。

Javaは特に、飛行中にインターフェイス実装を作成しましょう。つまり、あなたは何かをすることができます

 
return new List() { 

    boolean add() {...} 
    void addAll {...} 
    ... 
} 

これはもちろんListのような複雑なインターフェイスのための過剰ですが、実際にはより小さいインターフェイスの場合は非常に便利です。

3

インターフェイスを実装するクラスのインスタンスを作成します。

あなたはそのクラスが何であるか分かりません。毎週火曜日に別のクラスを使用することもできます(そうではありません)。
クラスをインターフェイスで使用するだけです。

+0

私はArrayList test = Arrays.asList(someVector)のようなことをすることができますか? –

+1

いいえ、できません.Arrays.asListはおそらく 'ArrayList'以外の実装を返します。 – SLaks

関連する問題