通过套接字发送枚举值的最佳方式是什么?有没有办法将枚举值转换为int,反之亦然? Like:Java〜通过套接字连接发送枚举
Enum values {
value1,
value2
}
int value = (int)value1;
And...
values value2 = (value) value;
将通过互联网发送这非常好! 谢谢大家!
巴斯
通过套接字发送枚举值的最佳方式是什么?有没有办法将枚举值转换为int,反之亦然? Like:Java〜通过套接字连接发送枚举
Enum values {
value1,
value2
}
int value = (int)value1;
And...
values value2 = (value) value;
将通过互联网发送这非常好! 谢谢大家!
巴斯
要么马歇尔int
:
int ordinal = values.value1.ordinal()
//unmarshalling
values.values[ordinal];
或String
:
String name = values.value1.name();
//unmarshalling
values.valueOf(name);
前者保存某些空间(相对于不同长度的字符串32位),但很难维持,例如重新排列enum
值将突破ordinal()
的向后兼容性。另一方面ordinal()
允许您重命名enum
值...
那(和Banthars andswer)运行良好。现在还有一个问题:什么是Java函数获得与C#相同的结果:this.cmd =(Command)BitConverter.ToInt32(data,0); – Basaa 2012-02-28 13:21:16
@Basaa:从技术上讲,这应该是第二个问题(它更可能会收到答案),但看看这个:stackoverflow.com/questions/1026761 – 2012-02-28 13:25:16
如果可以的话,我会使用该名称。例如'dataOutput.writeUTF(value.name())'和'Enum e = Values.forName(dataInput.readUTF())',因为它更具可读性。 – 2012-02-28 13:43:19
重复的http://stackoverflow.com/questions/1681976/enum-with-int-value-in-java – 2012-02-28 13:05:50
不,我不想要为属性添加值,我只是想通过套接字发送一个在服务器和客户端上的微弱的枚举值。感谢您的评论;) – Basaa 2012-02-28 13:07:39
尝试[this](http://mindprod.com/jgloss/enum.html#ORDINAL)。 – 2012-02-28 13:08:44