我必须将大约 10-12 个常量初始化为连续整数。我现在正在这样做:
class MyClass
{
public static final int A = 1;
public static final int B = 2;
public static final int C = 3;
public static final int D = 4;
.
.
.
}
只是想知道是否有更整洁的方法可以做到这一点。也许类似于 C 中的枚举?
首选方法是使用 enum
:
enum MyEnum {
A, B, C, D;
public final int value = ordinal() + 1; // or "+ base index"
}
public static void main(String[] args) {
System.out.println(MyEnum.B.value); // 2
}
或者,如果您确实更喜欢原始整数常量,则可以执行以下操作:
public static final int A, B, C, D;
static {
int x = 1;
A = x++; B = x++; C = x++; D = x++;
}
这限制了辅助反变量(x
)的范围。
是的,从 1.5 开始,Java 中就有枚举。或者你也可以做:
private static int x = 0;
public static final int A = x++;
public static final int B = x++;
public static final int C = x++;
public static final int D = x++;
.
.
你可以在 Java 中使用枚举
enum MyEnum {
NOT_USED, A, B C, D, E, F
}
MyEnum x =
int num = x.ordinal();
是的,您可以使用枚举。像这样:
class MyClass
{
public enum myEnum {
A, B, C,D
}
}
Java 中的枚举与 C 中的枚举不同。 你可以做如下的事情,但是每次你想使用常量时都必须调用getValue(),这可能不是你想要的。
public enum MyEnum {
A(1), B(2), C(3), D(4);
private final int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}