Java cast Lange Enum-Typ Problem

Hatte ich ein kleines problem mit casting-Java long-Datentyp Enum-Typ und kann nicht finden, eine Lösung, wie das zu tun.

Hier ist, was ich verwende :

public enum DataType {
    IMAGES(1),
    VIDEOS(2);

    private int value;
    private DataType(int i){
        this.value = i;
    }
}

und ich brauche etwas wie das hier tun:

DataType dataType;
String thiz = "1";
long numb = Long.parseLong(thiz);
dataType = numb;

Die Fehler, die ich bekomme sagt:

Konvertieren taub, um ein Datentyp oder Datentyp konvertieren zu lange.

Zweite Szenario:

Habe ich dieses :

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.

Ich habe versucht, zu konvertieren thiz String [], und verwenden valueOf,aber

Irgendwelche Vorschläge, wie man das denkt, zu arbeiten?

Vielen Dank im Voraus!

  • Sie können nicht mehr als ungefähr 30K enum-Werte, die macht long oder sogar int overkill für das, was Sie brauchen.
  • also Sie empfehlen mir mit int statt long?
  • es ist unklar, was Sie sich beziehen, mit "ich habe versucht, zu konvertieren zu einem String [], und verwenden valueOf".
  • Beachten Sie auch, dass String tmp=incomingData.toString(); // where incomingData is byte[] ist anfällig für Fehler aufgrund von encoding-mismatch. Verwenden new String(byte[],charsetName)
  • Sorry,es muss sein, ich habe versucht, zu konvertieren thiz in String[].
Schreibe einen Kommentar