繁体   English   中英

从不同的值转换为Enum值

[英]Converting from different values to Enum value

我的应用程序获取需要转换为相应Enum值的外部数据。 这是我的第一种方法:

public enum Side {
    LEFT,
    RIGHT;

    public static Side fromByte(Byte b) throws Exception {
        switch(b)
        {
            case 'l':
                return LEFT;
            case 'r':
                return RIGHT;
            default:
                throw new Exception("not a valid byte");
        }
    }
}

这样可以吗,还是有一种更惯用的方式来做到这一点?

注意:忽略字节与字符的比较以及非常通用的异常抛出,稍后我将进行研究-特别是char和字节类型转换。 似乎比我最初预期的要大。

我通常会这样

public enum Side
{
    LEFT('l'),
    RIGHT('r');

    private byte byteValue;

    private Side(byte byteValue)
    {
        this.byteValue = byteValue;
    }

    public byte getByteValue()
    {
        return byteValue;
    }

    public static Side findByByteValue(byte value)
    {
        for(Side side : values())
        {
            if(side.byteValue == value)
            {
                return side;
            }
        }
        return null;
    }
}

方法看起来不错。 但是,如果有可能发生大量情况,请考虑使用map(在您的情况下,实现可以是HashMap),因为它将更具可读性,并且代码更少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM