前几天我试图这样做,但它不起作用:
enum MyEnum {ONE = 1, TWO = 2}
令我惊讶的是,它没有编译!如何定制自定义序列???
答案 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;
}
}