java - 是否可以扩展 Java 枚举?

标签 java enums

这就是我想要完成的事情,我有一个包含一些值的枚举的类,我想继承它并向枚举添加更多值。这是一个不好的例子,但是:

public class Digits
{
 public enum Digit
 {
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
 }
}

public class HexDigits extends Digits
{
 public enum Digit
 {
  A, B, C, D, E, F
 }
}

这样 HexDigits.Digit 包含所有的十六进制数字。这可能吗?

最佳答案

不,这是不可能的。您能做的最好的事情是让两个枚举实现和接口(interface),然后使用该接口(interface)而不是枚举。所以:

interface Digit {
  int getValue();
}

enum Decimal implements Digit {
  ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE;

  private final int value;

  Decimal() {
    value = ordinal();
  }

  @Override
  public int getValue() {
    return value;
  }
}

enum Hex implements Digit {
  A, B, C, D, E, F;

  private final int value;

  Hex() {
    value = 10 + ordinal();
  }

  @Override
  public int getValue() {
    return value;
  }
}

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

相关文章:

java - 为什么这个程序只给出前两个单词作为输出? s1[] 中存储了什么数据?

java - 使用 JPA/Hibernate/MySQL 测试 JTA XA 分布式事务

c++ - 如何使用 protobuf 描述符读取枚举

c++ - 构造函数 Qt C++ 中的枚举

java - 使用 Java 代码创建相对布局时出错

Java Jlabel 更新文本

c - 用于指定 C 枚举大小的 GCC/Clang/MSVC 扩展?

java - 如何为位置相关的 Switch 案例定义枚举

java - token "OnClickListener"上的语法错误,= 预期在此 token 之后

Java 枚举类型编码约定