有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的层次枚举

假设我有一个这样的结构:

enter image description here

是否可以创建一个枚举来返回所选单元格的字符串值?例如:

enum.GROUP_MAIN1.SUBGROUP1.COL1

将返回值“COL1”

我正在寻找嵌套枚举,但没有找到这种情况的解决方案


共 (2) 个答案

  1. # 1 楼答案

    你不可能拥有你所要求的一切。这里有一种方法可以获得一些:

    enum MainGroup { GROUP_MAIN1, GROUP_MAIN2 };
    
    enum Subgroup {
        SUBGROUP1(MainGroup.GROUP_MAIN1), SUBGROUP2(MainGroup.GROUP_MAIN1),
        SUBGROUP3(MainGroup.GROUP_MAIN2), SUBGROUP4(MainGroup.GROUP_MAIN2);
    
        MainGroup main;
    
        private Subgroup(MainGroup main) {
            this.main = main;
        }
    
        public MainGroup getMainGroup() {
            return main;
        }
    
    }
    
    enum Col {
        COL1(Subgroup.SUBGROUP1), COL2(Subgroup.SUBGROUP1), COL3(Subgroup.SUBGROUP2), COL4(Subgroup.SUBGROUP2),
        COL5(Subgroup.SUBGROUP3), COL6(Subgroup.SUBGROUP3), COL7(Subgroup.SUBGROUP4), COL8(Subgroup.SUBGROUP4);
    
        Subgroup sub;
    
        private Col(Subgroup sub) {
            this.sub = sub;
        }
    
        public MainGroup getMainGroup() {
            return sub.getMainGroup();
        }
    
        public Subgroup getSubgroup() {
            return sub;
        }
    }
    

    您还可以在MainGroup中实现一个方法来查找该主组下的所有子组,对于子组和col也是如此

  2. # 2 楼答案

    你可以用这样的技巧做到这一点:

    public interface GROUPMAIN1 {
        enum SUBGROUP1 implements GROUPMAIN1 {
            COL1,
            COL2,
            COL3
        }
        enum SUBGROUP2 implements GROUPMAIN1 {
            COL3,
            COL4
        }
    }
    

    因此,要获得enum,您需要使用GROUPMAIN1.SUBGROUP1.COL1

    如果您只需要一个字符串常量,也可以通过另一种方式完成:

    public interface GROUPMAIN1 {
        interface SUBGROUP1 {
            String COL1 = "COL1";
            String COL2 = "COL2";
        }
        interface SUBGROUP2 {
            String COL3 = "COL3";
            String COL4 = "COL4";
        }
    }