我想从代码中的另一个枚举声明中访问枚举值,如下所示。但我无法宣布它,有没有办法在java中做到这一点。
LOOK_UP.BACKOFFICE_DEAFULT_RAPOR_DATE.LAST_FINISHED_MSPOT_TRADING_DATE
答案 0 :(得分:2)
更改
BACKOFFICE_DEAFULT_RAPOR_DATE("BACKOFFICE_DEAFULT_RAPOR_DATE");
BACKOFFICE_QUERY_TYPE("BACKOFFICE_QUERY_TYPE"),
到
BACKOFFICE_DEAFULT_RAPOR_DATE("BACKOFFICE_DEAFULT_RAPOR_DATE"), // <--- comma
BACKOFFICE_QUERY_TYPE("BACKOFFICE_QUERY_TYPE"); // <--- semi colon
...
} // <--- missing closing curly brace at the end
完整代码:
public enum LOOK_UP {
BACKOFFICE_DEAFULT_RAPOR_DATE("BACKOFFICE_DEAFULT_RAPOR_DATE"), // <--- (1)
BACKOFFICE_QUERY_TYPE("BACKOFFICE_QUERY_TYPE"); // <--- (2)
// no changes
public enum LOOK_UP_OPTION {
// no changes
}
} // <--- (3)
答案 1 :(得分:1)
如果您有两个enums
,OuterEnum
和InnerEnum
,并且OuterEnum
的字段类型为InnerEnum
,那么您可以做些什么&# 39;重新谈论。简化,......
enum OuterEnum {
OUTER1(InnerEnum.INNER1), OUTER2(InnerEnum.INNER2);
public final InnerEnum myInner;
private OuterEnum(InnerEnum inner) {
this.myInner = inner;
}
}
enum InnerEnum {
INNER1, INNER2;
}
现在,您可以说OuterEnum.OUTER1.myInner
或OuterEnum.OUTER2.myInner
来获取InnerEnum
所拥有的OuterEnum
值。但你不能说OuterEnum.OUTER1.INNER1
之类的东西。这没有任何意义。如果您知道自己需要INNER1
,则应该说InnerEnum.INNER1
。
您可以InnerEnum
在enum
内声明,OuterEnum
成为真正的内enum
,但同样的原则适用。如果您知道所需的精确值,请直接引用它。如果您想知道另一个public enum LOOK_UP {
BACKOFFICE_DEAFULT_RAPOR_DATE("BACKOFFICE_DEAFULT_RAPOR_DATE", LOOK_UP_OPTION.LAST_FINISHED_MSPOT_TRADING_DATE),
BACKOFFICE_QUERY_TYPE("BACKOFFICE_QUERY_TYPE", LOOK_UP_OPTION.STATIC_QUERY_TYPE);
private String name;
public final LOOK_UP_OPTION option;
private LOOK_UP(String name, LOOK_UP_OPTION option){
this.name=name;
this.option = option;
}
public String getName(){
return name;
}
public enum LOOK_UP_OPTION {
LAST_FINISHED_MSPOT_TRADING_DATE(LOOK_UP.BACKOFFICE_DEAFULT_RAPOR_DATE ,"LAST_FINISHED_MSPOT_TRADING_DATE","LAST FINISHED MSPOT TRADING DATE"),
STATIC_QUERY_TYPE(LOOK_UP.BACKOFFICE_QUERY_TYPE ,"STATIC_QUERY_TYPE","Static Query");
LOOK_UP look_up;
private String code;
private String label;
//db miss match label and code
private LOOK_UP_OPTION(LOOK_UP look_up , String code,String label){
this.look_up=look_up;
this.code=code;
this.label=label;
}
}
}
持有的值,请按上述方式间接引用它。
你好像已经倒了你的枚举。第一个必须是包含枚举。要按照你所说的方式做到这一点,你需要做这样的事情:
LAST_FINISHED_MSPOT_TRADING_DATE
然后你可以调用,比方说,
LOOK_UP.BACKOFFICE_DEAFULT_RAPOR_DATE.LOOK_UP_OPTION;
并且您获得LOOK_UP_OPTION
值。
LOOK_UP
的{{1}}属性必须是最终的,以防止代码更改它。