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);
    }

在第 2 种情况下,我不必<S extends Foo>为每个返回的方法重复,S因为它是在接口中声明的,尽管在使用时我必须定义为Reaper<MyType, MyFooSubType>. 除此之外,是否有任何重大区别和/或好处?

4

2 回答 2

6

如果在类级别声明它,则不能在同一个类实例上调用具有不同类型参数的函数。
换句话说,类型成为实例的属性,而不是每个函数调用的属性。

于 2013-10-23T22:02:46.793 回答
1

用例有点不同。类级别的使用将保证您在所有方法上的一致性(类型限制)。

于 2013-10-23T22:03:27.730 回答