这个程序不编译:Java泛型编译错误涉及<? extends T>类
public class xx {
static class Class1<C> {
void method1(C p) {
}
}
static class Class2<T> extends Class1<Class<? extends T>> {
T object;
void method2() {
this.method1(this.object.getClass());
}
}
}
的错误是:
xx.java:10: method1(java.lang.Class<? extends T>) in xx.Class1<java.lang.Class<? extends T>>
cannot be applied to (java.lang.Class<capture#215 of ? extends java.lang.Object>)
this.method1(this.object.getClass());
为什么会出现这种情况?为什么编译器似乎认为object.getClass()
回报Class<? extends Object>
代替Class<? extends T>
?
谢谢,为我澄清! – Archie