假设我们有两个通用 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>
东西在我看来很难看。