メソッドがジェネリックを返す場合、クラス レベルで宣言する場合と比較して、ジェネリック クラスを戻り値の型として宣言する利点はありますか?
//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>
です。それ以外に、大きな違いや利点はありますか?