如果之前已经回答,我很抱歉。我做了一个搜索,但没有找到。他试图将我的Enum定义如下,这很好。
public enum MyEnum {
PRODUCT,STORE,PROMOTION,VOUCHER,URL;
private int value;
}
但是当我将其定义如下时,无法识别int令牌。那是为什么?
public enum MyEnum {
private int value;
PRODUCT,STORE,PROMOTION,VOUCHER,URL;
}
答案 0 :(得分:6)
如果您阅读documentation,则说明
Java要求首先在任何字段或方法之前定义常量。此外,当存在字段和方法时,枚举常量列表必须以分号结尾。
答案 1 :(得分:3)
必须在枚举类型中的任何其他变量和方法声明之前声明枚举常量。如果枚举仅声明其中的值,则分号是可选的。否则,声明值末尾的分号是必需的。例如,你需要“;”在蓝色结束时(“蓝色”)。
答案 2 :(得分:2)
附录(问题已经回答,这是一个howto):如果你想在枚举中添加一个构造函数,构造函数的参数必须附加到枚举常量本身:
public enum MyEnum
{
VALUE1(1);
private final int value;
// Constructors of enums are private by default,
// no need to specify the access modifier
MyEnum(final int value)
{
this.value = value;
}
public int getValue()
{
return value;
}
}
请注意,您还可以添加方法:
public enum MyEnum
{
VALUE1
{
@Override
public int getValue()
{
return 0;
}
};
public abstract int getValue();
}
你可以将两者结合起来;在这种情况下,首先提到值,然后是方法实现,如:
VALUE("foo", 32)
{
@Override public int method1() { // whatever }
@Override public String method2() { // whatever }
};