我的应用程序获取需要转换为相应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");
}
}
}
这没关系,还是有更惯用的方法呢?
注意:忽略字符到字符比较和非常通用的异常抛出,我稍后会研究 - 特别是字符和字节类型转换。似乎比我原先预期的更重要。
答案 0 :(得分:3)
我通常会这样做,
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;
}
}
答案 1 :(得分:1)
方法看起来很好。但是如果有大量案例的可能性,那么考虑使用map(在你的情况下实现可以是HashMap),因为它将更具可读性和更少的代码。