枚举枚举的Java自定义枚举值 [英] Java custom enum value to enum
问题描述
我有这样的枚举
public enum Sizes {
Normal(232), Large(455);
private final int _value;
Sizes(int value) {
_value = value;
}
public int Value() {
return _value;
}
}
现在我可以调用Sizes.Normal.Value()获取整数值,但是如何将整数值转换为枚举?
Now I can call Sizes.Normal.Value() to get integer value, but how do I convert integer value back to enum?
我现在所做的是:
public Sizes ToSize(int value) {
for (Sizes size : Sizes.values()) {
if (size.Value() == value)
return size;
}
return null;
}
但这只是方法吗?这就是Java的工作原理?
But that's only way to do that? That's how Java works?
推荐答案
是的,这是怎么做的,一般通过在枚举中添加静态方法。想想吧你可以在这个枚举上有10个字段。你希望Java设置所有的查找?
Yes that's how it's done, generally by adding a static method to the enum. Think about it; you could have 10 fields on the enum. Do you expect Java to set up lookups for all of them?
这里的意思是Java枚举没有值。他们有身份和秩序,加上你为自己添加的任何东西。这与C#不同,C#中的C ++具有任意的整数值。
The point here is that Java enums don't have a 'value'. They have identity and an ordinal, plus whatever you add for yourself. This is just different from C#, which follows C++ in having an arbitrary integer value instead.
这篇关于枚举枚举的Java自定义枚举值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!