Enum
在java.lang.Enum
中,並且Object
在java.lang.Object
中。那麼,爲什麼Enum
不是Object
? (我得到一個java.lang.ClassCastException
)我想擴展枚舉和對象(generic)
我想打一個類,它可以同時接受Object
和Enum
,像這樣...
public class MyType<T extends Enum<T>, Object> {
但是,這給出了一個編譯錯誤。我怎樣才能使我的MyType
,以便它可以接受所有(或兩個)類的類? (Enum
或Object
)?
謝謝你的回答。我的第一個問題解決了。但是,我不能投T []枚舉[]類型。 ex,枚舉ITEM {}; myType = new MyType- (); ITEM [] items = myType.getData(); // getData()返回T []。爲什麼不能施放?在控制檯:java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲[Ljtrix.manager.ItemManager $ ITEM; –
很高興我能幫到你。你可能想要upvote和/或接受:-)編輯:我現在看到你的補充:因爲這是一個不同的問題,我會張貼在不同的線程! –
數組類型是協變的,這意味着'Object []'是任何'MyType []'的*超類*。換句話說,'MyType [] instanceof Object []'是'true',而反過來顯然是'false'。您無法將Object []轉換爲任何其他數組類型。還要注意數組的類型是它的運行時屬性,而不是像泛型那樣的編譯時。 –