对于这段代码:
interface IB<T> {
}
interface IC<T extends IB<U>, U> {
void onMessage(T obj);
}
class MyClass {
<T extends IB<U>, U> void setValue(IC<T, U> event) {
}
}
class Foo {
public static void main(String args[]) {
MyClass tmp = new MyClass();
tmp.setValue((event) -> {}); // error here
}
}
使用Eclipse Neon 4.6.1时出现此错误:
Cannot infer type argument(s) for <T, U> setValue(IC<T,U>)
但使用Eclipse 4.6.0和Intellij IDEA 2016.2编译相同的代码。当我将鼠标悬停在event
上时,这些IDE会将类型显示为IB<Object>
。
这段代码有什么问题,或者这是Eclipse 4.6.1的错误?如果没有错,那么正确推断的T
和U
类型应该是什么?