给定具有以下签名的方法。
Dim arr As Variant
在以下两种方法中,只有第一种方法成功编译。
public static <T extends Comparable<T>> int dummyMethod(List<T> list, T elem) {
// Body
}
javac(JDK 8u60)返回的错误如下:
public void call() {
MyClass v = new MyClass();
List<MyClass> ls = new ArrayList<>();
dummyMethod(ls, v);
}
public void brokenCall() {
Comparable<MyClass> v = new MyClass();
List<Comparable<MyClass>> ls = new ArrayList<>();
dummyMethod(ls, v); // Compilation error here.
}
我很困惑为什么在brokenCall中作为参数提供的变量类型与它的签名不匹配。
答案 0 :(得分:3)
在brokenCall
,您正在制作T
= Comparable<MyClass>
,但Comparable<MyClass> extends Comparable<Comparable<MyClass>>
无效。