首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中带有int值的枚举

Java中带有int值的枚举
EN

Stack Overflow用户
提问于 2009-11-06 00:52:28
回答 4查看 34K关注 0票数 52

C#的Java等价物是什么:

代码语言:javascript
复制
enum Foo
{
  Bar = 0,
  Baz = 1,
  Fii = 10,
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-06 00:57:44

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

代码语言:javascript
复制
public enum Foo {
    BAR (0),
    BAZ (1),
    FII (10);

    private final int index;   

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

    public int index() { 
        return index; 
    }

}

你可以这样使用它:

代码语言:javascript
复制
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,但这不是它们在example on the Sun website中所做的事情。

票数 81
EN

Stack Overflow用户

发布于 2011-09-05 07:31:10

如果您有一个连续的值范围,并且您所需要的只是整数值,那么您只需最小限度地声明枚举:

代码语言:javascript
复制
public enum NUMBERZ {
        ZERO, ONE, TWO
}

然后获取int值,如下所示:

代码语言:javascript
复制
int numberOne = NUMBERZ.ONE.ordinal();

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

票数 15
EN

Stack Overflow用户

发布于 2009-11-06 00:58:35

听起来你想要这样的东西:

代码语言:javascript
复制
public enum Foo {
    Bar(0),
    Baz(1),
    Fii(10);

    private int number;

    public Foo(int number) {
       this.number = number;
    }

    public int getNumber() {
        return number;
    }
}

对于初学者来说,Sun的Java Enum Tutorial将是一个学习更多信息的好地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1681976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档