Java枚举设置自定义序数

时间:2011-09-26 18:36:50

标签: java enums

前几天我试图这样做,但它不起作用:

enum MyEnum {ONE = 1, TWO = 2}

令我惊讶的是,它没有编译!如何定制自定义序列???

3 个答案:

答案 0 :(得分:38)

你做不到。通过从0开始并进行处理来修正。来自ordinal()的文档:

  

返回此枚举常量的序号(它在枚举声明中的位置,其中初始常量的序数为零)。

您无法指定自己的值。另一方面,您可以在枚举中拥有自己的值:

public enum Foo {
    ONE(1), TWO(2);

    private final int number;

    private Foo(int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }
}

答案 1 :(得分:5)

您可以手动执行此操作:

enum MyEnum {
    ONE(1), 
    TWO(2);

    private int val;

    private MyEnum(int val) {
        this.val = val;
    }
}

答案 2 :(得分:1)

定义枚举的顺序将决定序数。

enum MyEnum {
    Enum1, Enum2;
}

这里,Enum1将拥有序数1,而Enum2将拥有序数2。

但您可以为每个枚举设置自定义属性:

enum MyEnum {
    Enum1(1), Enum2(2);

    private int ord ;

    MyEnum(int ord) {
        this.ord = ord;
    }

    public int getOrd() {
        return this.ord;
    }
}