1

メソッドがジェネリックを返す場合、クラス レベルで宣言する場合と比較して、ジェネリック クラスを戻り値の型として宣言する利点はありますか?

    //case #1
    public interface Reaper<T> {
        <S extends Foo> S save(S entity);
        <S extends Foo> S saveWithOptions(S entity, Object[] params);
    }

.

    //case #2
    public interface Reaper<T, S extends Foo> {   
        S save(S entity);
        S saveWithOptions(S entity, Object[] params);
    }

<S extends Foo>ケース #2 では、返されるメソッドごとに繰り返す必要はありません。これはS、インターフェイスで宣言されているためReaper<MyType, MyFooSubType>です。それ以外に、大きな違いや利点はありますか?

4

2 に答える 2

6

クラス レベルで宣言すると、同じクラス インスタンスで異なる型パラメーターを使用して関数を呼び出すことはできません。
つまり、型は各関数呼び出しのプロパティではなく、インスタンスのプロパティになります。

于 2013-10-23T22:02:46.793 に答える
1

ユースケースは少し異なります。クラス レベルで使用すると、すべてのメソッドで一貫性 (型制限) が保証されます。

于 2013-10-23T22:03:27.730 に答える