我想问一下嵌套枚举。我正在使用旧代码,发现非常奇怪的构造,我不太了解。
我有这个枚举:
public enum DbEngines {
ORACLE("oracle", "set define on", "set define off")
, POSTGRESQL("postgresql", "--TODO set define on", "--TODO set define off");
private final String dbEngine;
private String setOn;
private String setOff;
DbEngines(String dbEngine, String setOn, String setOff) {
this.dbEngine = dbEngine;
this.setOn = setOn;
this.setOff = setOff;
}
public String getSetOn() {
return setOn;
}
public String getSetOff() {
return setOff;
}
public String toString() {
return this.dbEngine;
}
}
我在此枚举中添加了专用于引擎的私有String,因此在这里对我来说是个好地方。问题是,在方法声明的某些地方,我看到了类似的
public someMethod(Enum<DbEngines> engine, ...)
它在没有方法的情况下也可以完美运行,但是现在,在更改之后,我无法称呼这个枚举为公众。但是,如果我更改为:
public someMethod(DbEngines engine, ...)
它对所有公共获取者都没有任何问题。也许有人可以解释一下?