在Java中使用int值的枚举

rip*_*234 51 c# java enums

什么是Java等价的C#:

enum Foo
{
  Bar = 0,
  Baz = 1,
  Fii = 10,
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ebb 81

如果你想要属性,enum你需要像这样定义:

public enum Foo {
    BAR (0),
    BAZ (1),
    FII (10);

    private final int index;   

    Foo(int index) {
        this.index = index;
    }

    public int index() { 
        return index; 
    }

}
Run Code Online (Sandbox Code Playgroud)

你会这样使用它:

public static void main(String[] args) {
    for (Foo f : Foo.values()) {
       System.out.printf("%s has index %d%n", f, f.index());
    }
}
Run Code Online (Sandbox Code Playgroud)

要意识到的是,这enum只是创建类的快捷方式,因此您可以向类中添加所需的任何属性和方法.

如果您不想在您上面定义任何方法,您enum可以更改成员变量的范围并制作它们public,但这不是他们在Sun网站上的示例中所做的.

  • 包含访问者的+1 :)请注意,要获得数值,您必须使用Foo.BAR.index() (2认同)

Car*_*arl 15

如果你有一个连续的值范围,并且你需要的只是整数值,你可以最小化地声明枚举:

public enum NUMBERZ {
        ZERO, ONE, TWO
}
Run Code Online (Sandbox Code Playgroud)

然后获取int值如下:

int numberOne = NUMBERZ.ONE.ordinal();
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要一个不连续的范围(如您的示例中,从1跳到10),那么您将需要编写自己的枚举构造函数,该构造函数设置您自己的成员变量,并为该变量提供get方法,如上所述在这里的其他答案.