【发布时间】:2011-08-29 12:45:57
【问题描述】:
我在将 Java long 类型转换为 Enum 类型时遇到了一点问题,找不到解决方案。
这是我正在使用的:
public enum DataType {
IMAGES(1),
VIDEOS(2);
private int value;
private DataType(int i){
this.value = i;
}
}
我需要这样做:
DataType dataType;
String thiz = "1";
long numb = Long.parseLong(thiz);
dataType = numb;
我得到的错误是:
将 numb 转换为 DataType 或将 dataType 转换为 long。
第二种情况:
我有这个:
static String[] packetType;
String tmp=incomingData.toString(); // where incomingData is byte[]
int lastLoc = 0;
int needsSize = packetFieldSizes[tmpCurrentField-1]; // where packetFieldSizes,tmpCurrentField are integers.
thiz=tmp.substring(lastLoc, needsSize);
packetType=thiz; // packetType = thiz copy; where thiz is the same as used above.
我尝试将 thiz 转换为 String[] 并使用 valueOf,但是
有什么建议可以让这些想法发挥作用吗?
提前致谢!
【问题讨论】:
-
你不能有超过 30K 的枚举值,这使得
long甚至int对于你需要的东西来说太过分了。 -
所以你推荐我使用 int 而不是 long?
-
不清楚您所说的“我试图将其转换为 String[] 并使用 valueOf”。
-
还要注意
String tmp=incomingData.toString(); // where incomingData is byte[]由于编码不匹配容易出错。使用new String(byte[],charsetName) -
对不起,我必须尝试将 thiz 转换为 String[]。
标签: java casting enums long-integer primitive-types