微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java强制转换为枚举类型问题

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;

我得到的错误说:

Convert numb to DataType or convert dataType to 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,但是

有任何建议如何使思想工作?

提前致谢!

解决方法

枚举已经为每个实例提供了一个唯一的整数.查看 ordinal().(请注意,它基于零.)

如果您需要从long到DataType,您可以这样做

DataType dataType;
String thiz;
long numb = Long.parseLong(thiz);
dataType = DataType.values()[(int) numb];

在这个答案中可以找到枚举常量,字符串和整数的完整转换列表:

> Conveniently map between enum and int / String

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐