【发布时间】:2013-10-17 17:28:06
【问题描述】:
我想知道为什么在 Java 语言中 class 不能扩展 enum。
我不是在谈论扩展 enum 的 enum(这是无法做到的,因为 java 没有多重继承,并且 enums 隐式扩展 java.lang.Enum),而是extends 和 enum 的类,以便只添加额外的方法,而不是额外的枚举值。
类似:
enum MyEnum
{
ASD(5),
QWE(3),
ZXC(7);
private int number;
private asd(int number)
{
this.number=number;
}
public int myMethod()
{
return this.number;
}
}
class MyClass extends MyEnum
{
public int anotherMethod()
{
return this.myMethod()+1;
}
}
这样使用:
System.out.println(MyClass.ASD.anotherMethod());
那么,任何人都可以为此限制提供理由(或指出正确的 JLS 部分)吗?
【问题讨论】:
-
因为
enums 默认为final。您不能从final类扩展。 -
我想他想知道“为什么它们是最终的 - 有没有理由它们必须或应该是最终的”
-
@user949300 这很容易通过使用 google 之类的 SEO =\ 找到
-
为什么不直接编写一个采用
MyEnum参数的静态方法呢? -
@LouisWasserman 是的,有很多解决方法,但我很好奇为什么选择它不允许按照我展示的方式进行操作:)
标签: java inheritance syntax enums jls