Java泛型类,包含泛型接口的实现实例

时间:2015-06-10 12:27:10

标签: java generics interface architecture

我正在开发一个独立的,自包含的组件,它需要特定于域的部分才能正常运行。这个想法的一部分是创建一个通用接口,它将在该组件的另一部分中解决接口实现的使用(在我的B类示例中)。

我为通用接口编写了以下示例:

public interface A<T> {
    public A f0(T t);
    public T f1();
}

API使用者必须创建此接口的实现并将其实例传递给组件。然后,组件将创建以下类B的实例,该实例将包含接口实现的输入实例:

public class B<T extends A> {
    private T t;

    public X getTsSomething(){
        return t.f1();
    }
}

问题:

如何强制X与接口A中的type参数类型相同?是否有一个明显的解决方案,或者这只是一个糟糕的设计的结果?如果是这样,那会是更好的方法吗?

1 个答案:

答案 0 :(得分:4)

看起来你想要的是:

public class B<S,T extends A<S>> {
    private T t;

    public S getTsSomething(){
        return t.f1();
    }
}