在定义值之前,无法在Enum中定义int变量

时间:2013-06-19 04:47:39

标签: java enums

如果之前已经回答,我很抱歉。我做了一个搜索,但没有找到。他试图将我的Enum定义如下,这很好。

public enum MyEnum {

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

    private int value;


}

但是当我将其定义如下时,无法识别int令牌。那是为什么?

public enum MyEnum  {

    private int value;

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

}

3 个答案:

答案 0 :(得分:6)

如果您阅读documentation,则说明

  

Java要求首先在任何字段或方法之前定义常量。此外,当存在字段和方法时,枚举常量列表必须以分号结尾。

答案 1 :(得分:3)

必须在枚举类型中的任何其他变量和方法声明之前声明枚举常量。如果枚举仅声明其中的值,则分号是可选的。否则,声明值末尾的分号是必需的。例如,你需要“;”在蓝色结束时(“蓝色”)。

What can or can not for the Java enum type when you use it?

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