2009-12-10 51 views
37

可能重複:
add values to enum的Java枚舉繼承

爲什麼在Java中枚舉不能從其他枚舉繼承?爲什麼這是以這種方式實施的?

+0

http://stackoverflow.com/questions/55375/add-values-to-enum – 2009-12-10 22:12:16

+3

我會改說你的問題。爲什麼枚舉不能有抽象基礎? Bill接受的答案解釋了爲什麼你不能用其他值擴展枚舉,但它仍然不清楚爲什麼他們不能共享基礎實現。 – 2009-12-10 22:19:50

回答

78

Example stolen from here

因爲添加元素的枚舉 將有效地創建一個超級 類,而不是一個子類。

考慮:

enum First {One, Two} 
enum Second extends First {Three, Four} 

First a = Second.Four; // clearly illegal 
Second a = First.One; // should work 

這是它與 普通班的工作方式相反。我想 可以這樣實施,但它 會比看起來更復雜實施 ,它會 肯定會讓人困惑。

+2

大概你想要的是 先執行MyInterface 第二個工具MyInterface 然後用MyInterface爲兩個工會組合 – user1176505 2013-02-12 11:09:08

+2

會先a = second.One是一個非法的聲明嗎? – 2014-09-05 16:18:18

+0

@TimothySwan被引用的代碼不會被編譯,因爲'enum Second extends First {Three,Four}'行會引發異常。 – 2016-07-29 03:13:23