Ich möchte eine Java-Enumeration als int. Serialisieren/deserialisieren. Ich verwende die Wearable Data Layer-API von Android Wear, um eine Enum-Einstellung zwischen Wear- und Phone-Geräten zu übertragen. Dies bedeutet, dass ich meine enum zu einem int und zurück zu einem enum programmatisch konvertieren muss. Beachten Sie, dass ich KEINE neuen Enums erstellen muss, sondern nur eine bestehende. Meine Sorge ist, dass, obwohl ich leicht einen Wert mit einer Aufzählung Methode setzen kann, es scheint, dass ich einfach einen nicht vorhandenen Wert festlegen konnte.Android Enum: Set enum programmatisch von Integer-Wert
public enum Color {
Undefined (0), Red(1), Yellow(2), Blue(3), Green(4), Black(5);
private int mValue;
private Color(int value) { this.mValue = value;} // Constructor
public int id(){return mValue;} // Return enum index
public void setValue(int i){mValue = i;}; // Set index
}
So kann ich folgendes tun:
Color color = Color.Red;
int index = color.id();
putDataMapReq.getDataMap().putInt("color",index);
Dieser Wert kann als int transportiert werden, und ich möchte es zur Rekonstitution wie folgt aber ich kann die setValue nicht get() Zugriffsmethode:
int newindex = dataMap.getInt ("color");
Color newColor = Color.Undefined;
newColor.setValue(newIndex);
Was ist das der richtige Weg? Gibt es eine Möglichkeit zu validieren, dass der neue Indexwert legitim ist?
Ist es möglich, eine ganze Zahl zu verwenden, als Zwischenwert anstelle eines Strings. Ich möchte Zeichen für den Transport minimieren. – Hephaestus
OK, ich habe meine Antwort aktualisiert. – nshmura
Süß !!!!! Genau das hatte ich vor. – Hephaestus