Genéricos Java: por que someObject.getClass () não retorna Class <? estende T>?
Eu esperaria que, do aspecto do tempo de compilação, bem como do aspecto do tempo de execução, não seria um problema para.getClass()
para fornecer um valor de retorno digitado corretamente.
Mas devo estar errado.
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>
}
}
EDITAR: Não funciona comClass<T>
eClass<? super T>
ou.