用Java中的int值枚举

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

什么是C#的Java等价物:

enum Foo
{
  Bar = 0,
  Baz = 1,
  Fii = 10,
}
提问于
用户回答回答于

如果你想为你的属性,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; 
    }

}

你会这样使用它:

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

要实现的是这enum只是创建一个类的快捷方式,所以你可以添加任何你想要的类的属性和方法。

如果你不想在你的方法上定义任何方法,enum你可以改变成员变量的范围并且创建它们public,但这不是他们在Sun网站上的例子中所做的。

用户回答回答于

如果你有一个连续的值范围,并且你需要的只是整数值,那么你可以简单地声明这个枚举:

public enum NUMBERZ {
        ZERO, ONE, TWO
}

然后获取如下的int值:

int numberOne = NUMBERZ.ONE.ordinal();

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

扫码关注云+社区