我想序列化/反序列化一个java枚举为int。我正在使用Android Wear可穿戴数据层API在Wear和Phone设备之间传输枚举设置。这意味着我需要将我的枚举转换为int并以编程方式返回到枚举。请注意,我不需要创建新的枚举,只需匹配现有的枚举。我担心的是,尽管我可以使用枚举方法轻松设置值,但似乎可以轻松设置一个不存在的值。Android枚举:从整数值编程设置枚举
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
}
因此,我可以做到以下几点:
Color color = Color.Red;
int index = color.id();
putDataMapReq.getDataMap().putInt("color",index);
此值可运为int,我想如下重建它,但我不能得到的setValue()方法可访问:
int newindex = dataMap.getInt ("color");
Color newColor = Color.Undefined;
newColor.setValue(newIndex);
这是正确的方法来做到这一点?有没有办法验证新的索引值是否合法?
是否有可能使用一个整数作为中间值,而不是String。我想尽量减少字符的运输。 – Hephaestus
好的,我更新了我的答案。 – nshmura
甜美!!!!!这正是我想到的。 – Hephaestus