将大量常量初始化为连续的整数。 Java中的C-like枚举?

时间:2011-05-10 09:53:40

标签: java

我必须将大约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中的枚举?

5 个答案:

答案 0 :(得分:5)

首选方法是使用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 :(得分:2)

是的,自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++;
.
.

答案 2 :(得分:1)

您可以在Java中使用枚举

enum MyEnum {
   NOT_USED, A, B C, D, E, F
}

MyEnum x = 
int num = x.ordinal();

答案 3 :(得分:1)

是的,您可以使用enum。 类似的东西:

class MyClass
{
public enum myEnum {
   A, B, C,D 
}

}

答案 4 :(得分:0)

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;
    }
}