枚举的Java自定义枚举值

xme*_*men 7 java enums

我有这样的枚举

public enum Sizes {
    Normal(232), Large(455);

    private final int _value;

    Sizes(int value) {
        _value = value;
    }

    public int Value() {
        return _value;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我可以调用Sizes.Normal.Value()来获取整数值,但是如何将整数值转换回枚举?

我现在做的是:

public Sizes ToSize(int value) {
    for (Sizes size : Sizes.values()) {
        if (size.Value() == value)
            return size;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

但这是唯一的方法吗?这就是Java的工作原理?

bma*_*ies 8

是的,它是如何完成的,通常是通过向枚举添加静态方法.想一想; 你可以在枚举上有10个字段.您是否希望Java为所有这些设置查找?

这里的要点是Java枚举没有'值'.他们有身份和序数,加上你为自己添加的任何东西.这与C#不同,C#在C++之后具有任意整数值.

  • 请参阅http://stackoverflow.com/questions/5316311/java-enum-reverse-look-up-best-practice. (3认同)
  • 我试图将静态HashMap放入他的枚举中,但似乎不允许你从枚举构造函数中填充它.1+ (2认同)