這裏是我的示例代碼:爲什麼鑄造不能像我所期望的那樣在這裏工作?
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