这是我想要完成的,我有一个类具有一些值的枚举,我想继承它并为枚举添加更多的值.这是一个不好的例子,但是:
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
}
}
Run Code Online (Sandbox Code Playgroud)
这样HexDigits.Digit包含所有十六进制数字.那可能吗?
我有几个使用下划线来分隔单词的Java枚举.在我的每个枚举中,我有一个toString方法,它实现为super.toString().replace("_",""),这样我就可以在没有下划线的GUI上显示字符串值.有没有什么方法可以让我的所有枚举使用这个toString方法,而不是在所有这些方法中重复它?如果这是一个常规类,答案很简单,实现toString()然后让我所有需要该实现的类扩展该类,但枚举不能扩展任何东西,甚至不能扩展枚举.
public enum Example1 {
HELLO_WORLD, HELLO_EARTH, HELLO_GLOBE
@Override public String toString() {
return super.toString().replace("_", " ");
}
}
public enum Example2 {
ANSWER_1, ANSWER_2, ANSWER_3
@Override public String toString() {
return super.toString().replace("_", " ");
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有一个解决方案,不会在所有枚举中复制这个toString()方法?
我有一系列看起来像这样的枚举,除了名称和值不同:
/* Bone Diagnosis. Value is internal code stored in database. */
public enum BoneDiagnosis {
NORMAL(121),
ELEVATED(207),
OSTEOPENIA(314),
OSTEOPOROSIS(315);
private int value;
BoneDiagnosis(final int value) {
this.value = value;
}
/** Get localized text for the enumeration. */
public String getText() {
return MainProgram.localize(this.getClass().getSimpleName().toUpperCase() + ".VALUE." + this.name());
}
/** Convert enumeration to predetermined database value. */
public int toDB() {
return value;
}
/** Convert a value read from the database back into an enumeration. */
public static …Run Code Online (Sandbox Code Playgroud)