我的应用程序获取需要转换为对应的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;
    }
}

关于java - 从不同的值转换为Enum值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39433830/

10-10 11:53