是什么让Java编译器认为父类不能代表其子类

Tii*_*ina -2 java

以下代码会导致错误:

Class<? extends BaseHandler<?, ?>> aClass = resource.getHandler();
BaseHandler<?, ?> baseHandler       = resource.getHandler();
BaseHandler<?, ?> baseHandler       = (BaseHandler<?, ?>) resource.getHandler();;
Run Code Online (Sandbox Code Playgroud)

第一行有效。第二行第三种强制转换有错误:

Inconvertible types; cannot cast 'java.lang.Class<capture<? extends c.c.BaseHandler<?,?>>>' to 'c.c.BaseHandler<?,?>'
Run Code Online (Sandbox Code Playgroud)

我是这样认为的: Class<? extend BaseHandler<?, ?>>应该是BaseHandler的子Class类型。那么baseHandler应该代表所有儿童班级。为什么会出现编译错误?

rua*_*akh 5

该代码不起作用的原因与

Class<Integer> clazz = Integer.class;
Integer i = clazz;
Run Code Online (Sandbox Code Playgroud)

不起作用,即 aClass不是它所代表的类的实例。