Эта программа не компилируется: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