为什么不能在具有多个边界的类型参数中使用类型参数?
所以,我知道以下内容不起作用,但为什么它不起作用?
interface Adapter<E> {}
class Adaptulator<I> {
<E, A extends I & Adapter<E>> void add(Class<E> extl, Class<A> intl) {
addAdapterFactory(new AdapterFactory<E, A>(extl, intl));
}
}
该方法给了我一个编译错误,“无法指定任何其他绑定适配器<E>当第一个绑定是类型参数时”(在Eclipse中),或“类型参数不能后跟其他边界”(在IDEA中),供您选择。add()
显然,你只是不允许在那里使用 type 参数,在 之前,就是这样。(在你问之前,如果你切换它们,它就不起作用了,因为不能保证它不是一个具体的类。但为什么不呢?我查看了Angelika Langer的常见问题解答,但找不到答案。I
&
I
通常,当某些泛型限制看起来是任意的时,这是因为您创建了一种类型系统实际上无法强制实施正确性的情况。但我不明白什么情况会破坏我在这里试图做的事情。我想说也许它与类型擦除后的方法调度有关,但只有一种方法,所以它不像有任何歧义......add()
有人可以为我演示问题吗?