在Java中使用int值的枚举

Posted 飞翔的熊blabla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中使用int值的枚举相关的知识,希望对你有一定的参考价值。

C#的Java等价物是什么:

enum Foo

  Bar = 0,
  Baz = 1,
  Fii = 10,

5 个答案:

答案 0 :(得分: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; 
    


你会这样使用它:

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,但这不是他们在3中所做的事情。

答案 1 :(得分:15)

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

public enum NUMBERZ 
        ZERO, ONE, TWO

然后获取int值如下:

int numberOne = NUMBERZ.ONE.ordinal();

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

答案 2 :(得分:4)

是:

enum Foo

  Bar(0),
  Baz(1),
  Fii(10);

  private int index;

  private Foo(int index) 
      this.index = index;
  

请注意,要从索引Foo.valueOf(1)(*)获取枚举值,将无效。您需要自己编写代码:

public Foo getFooFromIndex(int index) 
    switch (index) 
    case 0:
        return Foo.Bar;
    case 1:
        return Foo.Baz;
    case 10:
        return Foo.Fii;

    default:
        throw new RuntimeException("Unknown index:" + index);
    


(*):Enum.valueOf()从String返回枚举。因此,您可以使用Foo.valueOf('Bar')

获取值栏

答案 3 :(得分:2)

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

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将是一个了解更多信息的好地方。

答案 4 :(得分:0)

public enum Foo 
    Bar(0),
    Baz(1),
    Fii(10);

    private final int someint;
    Foo(int someint) 
        this.someint = someint;
    

在Java中,枚举与其他类非常相似,但Java编译器知道在各种情况下处理的方式略有不同。因此,如果你想要它们中的数据,你似乎需要有一个数据的实例变量和一个合适的构造函数

以上是关于在Java中使用int值的枚举的主要内容,如果未能解决你的问题,请参考以下文章

Python的枚举等价物[重复]

如何在枚举中获取枚举值的 int [重复]

2020.1.25 Java枚举详解

Effective Java 读书笔记之五 枚举和注解

枚举占多少字节?

枚举验证结论