假設有兩個類別,即Pet
和Dog
。 Pet
類是Dog
類的超類。爲什麼不能Class.getSuperClass()方法得到完全的超類類型實例?
Ques01:
當我編碼如下,發生編譯錯誤:Type mismatch: cannot convert from Class<capture#2-of ? super Dog> to Class<Pet>
Class<Pet> c1 = Dog.class.getSuperclass();
它是這樣的:
Class<? super Dog> c2 = Dog.class.getSuperclass();
此外,當我使用c2.newInstance()
,它只返回一個Object
實例。爲什麼我不能只獲得class Pet
的Class Instance
?
Ques02:
當我的System.out的c2.getName()
,它輸出"pet"
!所以c2剛剛得到了我想要的信息。
我真的很困惑這些。任何人都可以提供幫助嗎?非常感謝!
是的,我知道這個例子可以使用'newInstance'方法。我只是對'getSuperclass()'返回的Class實例感到困惑。由於我剛剛獲得了一個'類 super Dog> c2',它可以創建一個Object實例,同時'c2.getName()'表示它確實代表一個'Pet Class'。那麼如何使用c2獲得Class實例?非常感謝。 –
Judking
2013-04-07 13:46:40
@Judking當然可以。編譯器不知道它。用' super T>'方法必須返回'Object',因爲它也是'T'的超類。 – Sulthan 2013-04-07 13:53:03