如何在枚举构造函数中传递枚举? 这是我到目前为止所尝试的内容。
这是为了保证我不会混淆页面及其各自的部分。 我希望能够做'SectionsEnum section = PAGE2.sectionsEnum.SECTION_D;'在我的代码中的其他地方。
PagesEnum.class
public enum PagesEnum {
PAGE1(Page1Sections.class), // incompatible types, required SectionsEnum found Page1Sections
PAGE2(Page2Sections.class);
Class<? extends SectionsEnum> sectionsEnum;
PagesEnum(final Class<? extends SectionsEnum> sectionsEnum) {
this.sectionsEnum = sectionsEnum;
}
}
Page1Sections.enum
public enum Page1Sections implements SectionsEnum {
SECTION_A,
SECTION_B;
}
Page2Sections.enum
public enum Page2Sections implements SectionsEnum {
SECTION_C,
SECTION_D;
}
Main.class
public class Main {
public void example() {
SectionsEnum section = PAGE2.sectionsEnum.SECTION_D;
}
}
答案 0 :(得分:0)
你永远不会得到PAGE2.SECTION_D,但你可以在SECTION_D.getPage()周围做其他方式的关系: :
public enum SectionsEnum {
SECTION_A(PagesEnum.PAGE1),
SECTION_B(PagesEnum.PAGE1),
SECTION_C(PagesEnum.PAGE2),
SECTION_D(PagesEnum.PAGE2),
;
PagesEnum(PagesEnum page) {...}
}