[英]Android Java cast long to enum problem
我有一个Java Cast long类型到Enum类型的问题。 我正在使用此代码:
public enum RPCPacketDataType {
PT_JSON(1),
PT_BINARY(2);
private int value;
RPCPacketDataType(int i){
this.value=i;
}
public int getNumericType(){
return value;
}
}
static RPCPacketDataType tmpPacket_packetType;
我需要做这样的事情:
case 2:
{
long intVal = Long.parseLong(thisPart);
if(intVal == 0){
isBad = true; break;
}
tmpPacket_packetType=intVal;
break;
}
其中thisPart只是一个字符串: String thisPart;
错误说: Type mismatch: cannot convert from long to RPCCommucatorDefines.RPCPacketDataType
任何建议如何解决?
您需要编写一个方法,可能在RPCPacketDataType中:
public static RPCPacketDataType valueOf(int value) {
...
}
然后从你的案例陈述中调用它。 鉴于该值只能是整数,您几乎肯定会使用Integer.parseInt
而不是Long.parseLong
。
如何实现valueOf
方法取决于您 - 您可以遍历尝试查找匹配的所有值的EnumSet
,或者创建从Integer到RPCPacketDataType
的HashMap
,或者可能只是一个数组(带有验证)。 它取决于你的枚举中的内容,以及有多少值可以查看。
请注意,如果valueOf
传递的值与任何枚举值不对应,您还应该考虑如何做 - 一个选项是返回null
(并且可能在调用代码中明确地测试它); 另一种是抛出异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.