Java中的层次枚举
假设我有一个这样的结构: 是否可以创建一个枚举来返回所选单元格的字符串值?例如:Java中的层次枚举,java,enums,hierarchical,Java,Enums,Hierarchical,假设我有一个这样的结构: 是否可以创建一个枚举来返回所选单元格的字符串值?例如: enum.GROUP_MAIN1.SUBGROUP1.COL1 将返回值“COL1” 我正在寻找嵌套枚举,但没有找到解决此问题的方法。您可以使用以下技巧: public interface GROUPMAIN1 { enum SUBGROUP1 implements GROUPMAIN1 { COL1, COL2, COL3 } enum
enum.GROUP_MAIN1.SUBGROUP1.COL1
将返回值“COL1”
我正在寻找嵌套枚举,但没有找到解决此问题的方法。您可以使用以下技巧:
public interface GROUPMAIN1 {
enum SUBGROUP1 implements GROUPMAIN1 {
COL1,
COL2,
COL3
}
enum SUBGROUP2 implements GROUPMAIN1 {
COL3,
COL4
}
}
因此,要获取enum,您需要使用GROUPMAIN1.subb1.COL1
如果您只需要一个字符串常量,也可以通过另一种方式完成:
public interface GROUPMAIN1 {
interface SUBGROUP1 {
String COL1 = "COL1";
String COL2 = "COL2";
}
interface SUBGROUP2 {
String COL3 = "COL3";
String COL4 = "COL4";
}
}
你不可能拥有你所要求的一切。这里有一种方法可以获得一些:
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也是如此。可能的重复我不完全确定嵌套枚举是什么意思,但即使可能,您不应该这样做。@Silverclaw为什么不呢?我想它看起来像是有一个包含两个元素的主枚举组(GROUP_MAIN1和GROUP_MAIN1)和嵌套枚举,用于SUBGROUP1(“SUBGROUP1”,main.GROUP_MAIN1)这样的子组。我是一个新手,很抱歉问了一个愚蠢的问题:)你的枚举可以有自己是枚举的字段,所以没有什么可以阻止你实现这个。