我的枚举中有一些变量由于某种原因必须以“@”开头,例如:
public enum PR304MainDb {
@MODE,
@USERID,
@ROLES,
@MAX_DOC_COUNT
}
我使用这些变量的方式是将它们放入HashMap...:
Map<String, Object> in = new HashMap<String, Object>();
in.put(PR304MainDb.@MODE.toString(), 5);
...然后在调用存储过程时使用 HashMap 作为参数(我无法更改该代码)。
此外,在通话后,我读取了结果并进行了一些比较,例如:
if (out.getKey().equals(PR304MainDb.@MAX_DOC_COUNT.toString())) {
//DO SOMETHING
}
我知道这些名称无效,但是有其他方法可以实现此目的吗?
最佳答案
是的,有一种方法 - 不要使用枚举常量名称(不要使用 YOUR_CONSTANT.toString()
作为名称)。
与其他类一样,枚举可以具有字段和方法。一些可能性:
public enum PR304MainDb_Possibility1 {
MODE("@MODE"),
USERID("@USERID"),
ROLES("@ROLES"),
MAX_DOC_COUNT("@MAX_DOC_COUNT");
private PR304MainDb_Possibility1(String text) {
this.text = text;
}
public final String text;
}
public enum PR304MainDb_Possibility2 {
MODE,
USERID,
ROLES,
MAX_DOC_COUNT;
public String getText() {return "@" + name();}
}
关于以@("at"符号开头的Java变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22502154/