java - 在 Java 中扩展枚举

标签 java enums

我有一个枚举,我们称它为 A:

public enum A
{
    A,
    B
}

我有一个接受枚举 A 的函数:

public void functionA(A enumA)
{
    //do something
}

如何创建另一个枚举,可能调用 B,我可以传递给 functionA?像这样?

public enum B
{
    C
}

functionA(B.C);

我知道您不能扩展枚举,但我还有哪些其他可用选项?实现这一目标的最佳方法是什么?

最佳答案

你不能。

枚举类型是最终设计的。

原因是每个枚举类型应该只有在枚举中声明的元素(例如,我们可以在 switch 语句中使用它们),如果你允许扩展,这是不可能的类型。

你可以这样做:

public interface MyInterface {
    // add all methods needed here
}

public enum A implements MyInterface {
    A, B;
    // implement the methods of MyInterface
}

public enum B implements MyInterface {
    C;
    // implement the methods of MyInterface
}

请注意,此时无法使用此接口(interface)进行 switch。 (或者通常有一个 switch 对象可能来自多个 enum)。

关于java - 在 Java 中扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511453/

相关文章:

java - 如何在android中从光标处检索图像?获取 ImageView ?

c# - 带 int 的 BitShift 枚举条件

java - 如何检查对象列表中是否存在枚举值

c# - 如何创建枚举数组

Java - 从 csv 文件创建嵌套 TreeView

java - 将自定义对象传递给 Scala 模板

java - 将 Ordinal Enum 值设置为从 1 而不是 0 开始

java - 我应该使用 EnumSet 吗?

java - 方面建议其他方面

java - 无法在 RequestConfig 中将套接字超时设置为小于 1000 毫秒(Apache HTTP 异步客户端 4.1.2)