将大量常量初始化为连续整数.Java 中的类 C 枚举



我必须将大约 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;
    }
}

最新更新