7

我有这样的枚举

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

    private final int _value;

    Sizes(int value) {
        _value = value;
    }

    public int Value() {
        return _value;
    }
}

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

我现在要做的是:

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

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

4

2 回答 2

8

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

这里的重点是 Java 枚举没有“价值”。他们有身份和序数,加上你为自己添加的任何东西。这与 C# 不同,后者遵循 C++ 具有任意整数值。

于 2012-05-19T02:20:53.180 回答
1

我上次使用 Java 已经有一段时间了,但如果我没记错的话,你的_value字段和枚举的序数之间没有关系。例如, AFAIK 你可以有两个相同的条目_value。正如@bmargulies 指出的那样,您可以在枚举中有许多字段,并且没有什么限制您为每个(或全部)使用不同的值。

另请参阅此相关问题。显然,您不能直接设置条目的序号。

于 2012-05-19T02:23:23.667 回答