我想从另一个枚举声明中访问一个枚举值,如下所示。但是我无法实现声明它,在Java中有没有办法做到这一点。LOOK_UP.BACKOFFICE_DEAFULT_RAPOR_DATE.LAST_FINISHED_MSPOT_TRADING_DATE
最佳答案
解决OP的注释以忽略代码的新材料
如果您有两个enums
,OuterEnum
和InnerEnum
,并且OuterEnum
的字段类型为InnerEnum
,则可以执行您正在说的事情。大大简化...
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
保留的值,请如上所述间接引用它。地址OP的答案的先前内容
您似乎已经倒转了枚举。第一个必须是包含的枚举。要按照您声明的方式进行操作,您需要执行以下操作:
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;
}
}
}
然后,您可以调用例如
LOOK_UP.BACKOFFICE_DEAFULT_RAPOR_DATE.LOOK_UP_OPTION;
您将获得
LAST_FINISHED_MSPOT_TRADING_DATE
值。LOOK_UP_OPTION
的LOOK_UP
属性必须是最终属性,以防止代码对其进行更改。关于java - JAVA Sub Enum声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35126780/