假设我们有两个通用 Java 接口:Foo<T>和Bar<T>,其中可能有很多实现。现在,假设我们想要将其中的每一个存储在一个类中,两者都使用相同的值T,但保持输入的确切实现:
public interface FooBar<T, TFoo extends Foo<T>, TBar extends Bar<T>> {
TFoo getFoo();
TBar getBar();
}
上面,T仅用于强制执行TFoo和TBar的类使用相同的类型参数。添加此类型参数FooBar似乎是多余的,原因有两个:
FooBar实际上根本不在乎T。- 即使确实如此,
T也可以从TFoo和推断出来TBar。
因此,我的问题是,是否有一种方法可以强制执行这样的条件,而不会弄乱FooBar的类型参数列表。不得不写FooBar<String, StringFoo, StringBar>而不是理论上等效的FooBar<StringFoo, StringBar>东西在我看来很难看。