如何计算枚举的值?编译器是否给它一个静态值?它有什么样的值(value)?
我问的原因是因为我想知道在 tcp(或任何进程间)连接上使用枚举值会产生什么后果。 (我所说的枚举值是指 Enum.VALUE
)显然,除非您知道每个枚举的预定值,否则您将无法从另一种语言构建与您的程序兼容的数据包。那么是否有可能找出每个的“真实”值?两个使用相同枚举“类”文件的 Java 程序会相互理解吗?
纯理论,请勿喷。不过,指针很好。
最佳答案
如前所述,不要依赖底层实现。相反,设计您的枚举以在您的控制下存储此类信息。想象一下,您有三个命令要发送到某个嵌入式 Controller ,这是通过将位模式写入寄存器来完成的。你想使用枚举来为你提供命令的高级表示,但在某些时候你需要那些讨厌的位模式:
public enum EmbeddedControllerCommand {
FOO(0x001), BAR(0x010), BAZ(0x100);
private int bitPattern = 0;
EmbeddedControllerCommand(int bitPattern) {
this.bitPattern = bitPattern;
}
public int getBitPattern() {
return this.bitPattern;
}
}
只需调用 EmbeddedControllerCommand.FOO.getBitPattern()
即可获取 FOO 命令的命令模式。
关于Java 枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073314/