如何将值从值转换为枚举?

mra*_*ers 2 java enums

我有一个看起来有点像这样的枚举:

public enum Numbers {
  ONE(1), TWO(2), THREE(3);

  public final int num;

  public Numbers(int num) {
    this.num = num;
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够从参数转换为枚举,例如从int 1转换为枚举ONE.Java Enums中是否有任何内置机制来执行此操作,或者我是否必须为其编写自己的逻辑?

Col*_*ert 8

是的,你必须编写自己的逻辑,因为num变量是你自己的逻辑的一部分:

public enum Numbers {
    ONE(1), TWO(2), THREE(3);

    public final int num;

    private Numbers(int num) {
        this.num = num;
    }

    public static Numbers getNumber(int i){
        for(Numbers number : Numbers.values()){
            if(i == number.num){
                return number;
            }
        }
        throw new IllegalArgumentException("This number doesn't exist");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果您打算这样做,为什么不使用`Map <Integer,Number>`,静态创建地图? (2认同)