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

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...