gpt4 book ai didi

java - 为什么类不能扩展枚举?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:05 25 4
gpt4 key购买 nike

我想知道为什么在 Java 语言中 class 不能扩展 enum

我不是在谈论一个 enum 扩展一个 enum (这是不可能完成的,因为 java 没有多重继承,而且那个 enum 隐式扩展 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 部分)吗?

最佳答案

您不能扩展枚举。它们隐含地是 final。来自 JLS § 8.9 :

An enum type is implicitly final unless it contains at least one enum constant that has a class body.

此外,来自 JLS §8.1.4 - Superclasses and Subclasses :

It is a compile-time error if the ClassType names the class Enum or any invocation of it.

基本上,enum 是一组预定义常量的枚举集。因此,该语言允许您在 switch-cases 中使用枚举。例如,通过允许扩展它们,不会使它们成为 switch-cases 的合格类型。除此之外,扩展枚举的类或其他枚举的实例也将是您扩展的枚举的实例。这基本上打破了 enum 的目的。

关于java - 为什么类不能扩展枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com