用于层次结构/树状结构的 Java 枚举

标签 java enums

我需要创建一个结构来表示以下内容(对于类别和子类别)。它只有一层深。我正在考虑使用 Java 枚举来实现它,但不确定如何表示这种层次结构。

代表设备的我的 java 对象(业务对象)将同时具有类别和子类别属性,我想使用枚举而不是使用整数代码,如 100、1 等。有些设备只有类别但没有子类别(如以下示例中的 300)。

100  Switch  
     1   Interior
     2   Exterior
200  Security Sensor     
     1   Door Sensor
     2   Leak Sensor
     3   Motion Sensor
300  Camera

感谢任何帮助。

谢谢

最佳答案

java.dzone article showcases 是分层枚举的一个很好的例子:

public enum OsType {
    OS(null),
        Windows(OS),
            WindowsNT(Windows),
                WindowsNTWorkstation(WindowsNT),
                WindowsNTServer(WindowsNT),
            Windows2000(Windows),
                Windows2000Server(Windows2000),
                Windows2000Workstation(Windows2000),
            WindowsXp(Windows),
            WindowsVista(Windows),
            Windows7(Windows),
            Windows95(Windows),
            Windows98(Windows),
        Unix(OS) {
                @Override
                public boolean supportsXWindows() {
                    return true;
                }
            },
            Linux(Unix),
            AIX(Unix),
            HpUx(Unix),
            SunOs(Unix),
    ;
    private OsType parent = null;

    private OsType(OsType parent) {
        this.parent = parent;
    }
}

这篇文章展示了您可以通过此设置实现的许多小技巧。

关于用于层次结构/树状结构的 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23123251/

相关文章:

enums - 是否可以在 yaml 中使用枚举作为路径参数?

java - 图像处理

java - 支柱2 :How to load values to a <s:select >from a list in session

Java - 枚举和构造函数内的函数/变量的问题

vb.net:覆盖枚举的 toString 方法

java - 具有工厂模式的枚举

java - Java 7/8 泛型中嵌套通配符的可分配性差异

java - 如何在考虑DDD的基础上构建一个简单的REST应用( Spring / hibernate )?

java - 在包含 ListView (Android) 的 View 中滚动

c# - 如何在 C# 中将字符串转换为 Flags 枚举格式