Java 枚举值

标签 java tcp enums

如何计算枚举的值?编译器是否给它一个静态值?它有什么样的值(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/

相关文章:

java - Android 应用程序 shell "no such file or directory",在文件资源管理器和 adb 中正常

Java 泛型 : List<Container<? >> = new LinkedList<Container<Double>>() 被禁止?

java - TCP 上的多个 channel ?

c - Сan 我通过套接字收到文件后立即退出 С

C#:将枚举类型作为参数传递

arrays - 如何在 swift 4 中声明数组索引的类型

java - 如何在 Hibernate 删除操作中获取对象的类

java - 使用 hibernate 从表中获取最大数量

HTML5 : Latest WebSockets

node.js - 类验证器不区分大小写的枚举验证?