2009-12-10 10 views
37

可能性の重複:
add values to enumJavaの列挙型の継承

、Javaの列挙型は、他の列挙型から継承することができないのはなぜ?これはなぜこのように実装されていますか?

+0

http://stackoverflow.com/questions/55375/add-values-to-enum –

+3

私はあなたに質問を言い換えます。なぜ列挙型は抽象基盤を持つことができないのですか? Billによって引用された質問に対する回答は、他の値で列挙型を拡張できない理由を説明していますが、基本実装を共有できない理由はまだ分かりません。 –

答えて

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 は、次に= Second.Oneは違法文で最初の2つのグループ – user1176505

+2

なりの労働組合のためのMyInterfaceを使うのか? –

+0

@TimothySwan 'Enum Second extends First {Three、Four}'行で例外がスローされるため、参照されるコードはコンパイルされません。 –