为什么不能在具有多个边界的类型参数中使用类型参数?
- 论坛
- 为什么不能在具有多个边界的类型参数中使用类型参数?
9 浏览
为什么不能在具有多个边界的类型参数中使用类型参数?
我理解以下代码不起作用,但是为什么不起作用呢?
interface Adapter{} class Adaptulator { > void add(Class extl, Class intl) { addAdapterFactory(new AdapterFactory (extl, intl)); } }
add()
方法给出了一个编译错误,"Cannot specify any additional bound Adapter
显然,在&
之前不能使用类型参数I
,就是这样。(在你问之前,如果你把它们换个位置也不起作用,因为不能保证I
不是一个具体的类。)但是为什么呢?我查看了Angelika Langer的FAQ,找不到答案。
通常,当一些泛型限制似乎是任意的时候,这是因为你创建了一种类型系统无法实际强制执行正确性的情况。但是我不知道什么情况会破坏我在这里尝试做的事情。我想也许与类型擦除后的方法分派有关,但只有一个add()
方法,所以没有任何歧义...
有人能为我演示一下问题吗?