, но это на самом деле то, что он возвращает.
даю, что с точки зрения времени компиляции, а также с точки зрения времени выполнения, это не будет проблемой для.getClass()
чтобы обеспечить правильно типизированное возвращаемое значение.
Но я должен быть неправ.
public class _GetClassGenerics2 {
static class MyClass {
}
public static void main(String[] args) {
MyClass myInstance = new MyClass();
// here it works
Class<? extends MyClass> type = myInstance.getClass();
myMethod(myInstance);
}
public static <T extends MyClass> void myMethod(T instance) {
Class<? extends T> type = instance.getClass();
// java.lang.RuntimeException: Uncompilable source code - incompatible types
// required: java.lang.Class<? extends T>
// found: java.lang.Class<capture#1 of ? extends _GetClassGenerics2.MyClass>
}
}
РЕДАКТИРОВАТЬ: Не работает сClass<T>
а такжеClass<? super T>
или.