[英]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.