为什么这个枚举无效?
enum Type{
MPEG-2=2,PASSED_PIDS_ID=3,DVB=4,ATSC=5,NA=6,UNDETERMINED=7
}
答案 0 :(得分:13)
您有几个语法错误,第一个标识符中有一个(-
在变量名中无效)以及您如何设置值。您不在枚举中使用=
,但您可以使用构造函数。试试这个:
enum Type {
MPEG2(2), PASSED_PIDS_ID(3), DVB(4), ATSC(5), NA(6), UNDETERMINED(7);
private final int value;
Type(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
答案 1 :(得分:2)
删除=<number>
,它无效。此外,第一种类型的减号不是有效的语法。
Enum有一个名为ordinal()
的方法,它返回Enum的顺序,但不推荐依赖它,如果你在将来添加任何新的枚举,然后在它之后添加枚举列表将有一个更高的序数。
如果您希望包含更多数据,那么您可以使用构造函数,例如:
public enum Fruit {
APPLE("Green"),
BANANA("Yellow");
private final String colourDescription;
Fruit(String colourDescription) {
this.colourDescription = colourDescription;
}
public String getColourDescription() {
return colourDescription;
}
}
因此,对于您的示例,最好不要有额外的信息,或者如上所述创建构造函数并以这种方式传递数字。
答案 2 :(得分:2)
您不能在标识符中包含-
。请改用MPEG_2
。我也不认为Java中的= [number]语法是正确的。
答案 3 :(得分:1)
它无效,因为“ - ”在标识符中不是有效字符。使用MPEG_2代替MPEG-2将解决它。