Я хочу спросить о вложенных перечислениях. Я работаю со старым кодом, и я нашел очень странную конструкцию, которую я не очень хорошо понимаю.
У меня есть это перечисление:
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, ...)
работает без проблем со всеми публичными получателями. Может быть, кто-то может это объяснить?