Java枚举继承[重复]

Posted

技术标签:

【中文标题】Java枚举继承[重复]【英文标题】:Java enum inheritance [duplicate] 【发布时间】:2009-12-10 22:06:44 【问题描述】:

可能重复:add values to enum

为什么 Java 中的枚举不能从其他枚举继承?为什么要这样实现?

【问题讨论】:

***.com/questions/55375/add-values-to-enum 我会改写你的问题。为什么枚举不能有抽象基础? Bill 引用的问题的公认答案解释了为什么不能用其他值扩展枚举,但我仍然不清楚为什么它们不能共享基本实现。 【参考方案1】:

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

这是相反的方式 与常规课程一起使用。我猜 可以这样实现,但它 实现起来会更复杂 比看起来,而且它会 肯定会迷惑人。

【讨论】:

可能你想要的是首先实现 MyInterface 第二个实现 MyInterface 然后使用 MyInterface 来合并两组 First a = Second.One 会是非法声明吗? @TimothySwan 引用的代码不会被编译,因为enum Second extends First Three, Four行会抛出异常。

以上是关于Java枚举继承[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java怎么声明枚举类型

java中枚举的常见用法

Java中的枚举继承?

java中的枚举类

[JAVA]枚举类型的应用

JAVA枚举类型