Java 泛型 class 包含泛型接口实现的实例
Java generic class that contains an instance of implementation of generic interface
我正在开发一个独立的、自包含的组件,它需要领域特定的部分才能正常运行。这个想法的一部分是创建一个通用接口,它将解决接口实现在该组件的另一部分中的使用(在我的 class B 示例中)。
我为通用接口编写了以下示例:
public interface A<T> {
public A f0(T t);
public T f1();
}
API 消费者必须创建此接口的实现并将其实例传递给组件。然后该组件将创建以下 class B 的实例,其中将包含接口实现的输入实例:
public class B<T extends A> {
private T t;
public X getTsSomething(){
return t.f1();
}
}
问题:
如何强制 X 与接口 A 中的类型参数相同?是否有明显的解决方案,或者这只是糟糕设计的结果?如果是这样,什么是更好的方法?
看来你想要的是:
public class B<S,T extends A<S>> {
private T t;
public S getTsSomething(){
return t.f1();
}
}
我正在开发一个独立的、自包含的组件,它需要领域特定的部分才能正常运行。这个想法的一部分是创建一个通用接口,它将解决接口实现在该组件的另一部分中的使用(在我的 class B 示例中)。
我为通用接口编写了以下示例:
public interface A<T> {
public A f0(T t);
public T f1();
}
API 消费者必须创建此接口的实现并将其实例传递给组件。然后该组件将创建以下 class B 的实例,其中将包含接口实现的输入实例:
public class B<T extends A> {
private T t;
public X getTsSomething(){
return t.f1();
}
}
问题:
如何强制 X 与接口 A 中的类型参数相同?是否有明显的解决方案,或者这只是糟糕设计的结果?如果是这样,什么是更好的方法?
看来你想要的是:
public class B<S,T extends A<S>> {
private T t;
public S getTsSomething(){
return t.f1();
}
}