枚举枚举的Java自定义枚举值 [英] Java custom enum value to enum

查看:133
本文介绍了枚举枚举的Java自定义枚举值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的枚举

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆