这里是我的示例代码:为什么铸造不能像我所期望的那样在这里工作?
public class Bar extends Foo {
}
@SuppressWarnings("unchecked")
public class Foo {
public static void main(String[] args) {
Foo foo = new Bar();
Class<Foo> x = (Class<Foo>) foo.getClass();
System.out.println(x);
}
}
那么我期待这个程序的输出是:让Foo.class因为我铸造类,但是我在输出中看到:
class Bar
为什么?
如果我从代码中删除铸件,程序甚至不会编译:
java: incompatible types
required: java.lang.Class<Foo>
found: java.lang.Class<capture#1 of ? extends Foo>
为什么编译器逼着我投?
@RealSkeptic这些问题是如何相同的? –
好了,一个'一'不是一个''即使有X'和'Y,'之间的某种联系'这就是为什么你不能从一个'' extends X>类分配给一个'类'。这是这个问题的要点,也是你问题的要点。 –
RealSkeptic