2

如果之前回答过,我很抱歉。我进行了搜索,但没有找到。嗨,我尝试将我的枚举定义如下,它工作正常。

public enum MyEnum {

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

    private int value;


}

但是当我将其定义如下时,它无法识别 int token。这是为什么?

public enum MyEnum  {

    private int value;

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

}
4

3 回答 3

7

如果您阅读它说的文档

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

于 2013-06-19T04:54:40.320 回答
3

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

当您使用 Java 枚举类型时,什么可以或不可以?

于 2013-06-19T04:56:13.197 回答
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 }
};
于 2013-06-19T05:01:08.187 回答