Why make it an enum within an enum?
Table.java
public enum Table {
CREATE("CREATE TABLE"),
ALTER("ALTER TABLE");
private String cmd;
Table(String cmd) {
this.cmd = cmd;
}
@Override
public String toString() {
return cmd;
}
}
Database.java
public enum Database {
CREATE("CREATE DATABASE");
private String cmd;
Database(String cmd) {
this.cmd = cmd;
}
@Override
public String toString() {
return cmd;
}
}
Con este ejemplo, System.out.println(Table.CREATE);
impresiones CREATE TABLE
.
Esto también ayudará en readabilty becuase se puede producir un código como:
String query = Table.CREATE + "(Column1 " + DbType.INTEGER + " " + Column.UNIQUE + " " + Column.PRIMARY_KEY + ")";
lo que sería un poco más fácil de leer y entender, la OMI.
EDITAR
Para tratar de acercarse a lo que está buscando usted podría hacer algo como:
public enum SQL {
TABLE("TABLE", SQL.CREATE_FLAG | SQL.ALTER_FLAG),
DATABASE("DATABASE", SQL.CREATE_FLAG);
public static final int CREATE_FLAG = 1;
public static final int ALTER_FLAG = 2;
public static final String CREATE_STRING = "CREATE";
public static final String ALTER_STRING = "ALTER";
public static final String INVALID = "INVALID";
private String name;
private boolean create;
private boolean alter;
SQL(String name, int flags) {
create = (flags & CREATE_FLAG) != 0;
alter = (flags & ALTER_FLAG) != 0;
this.name = name;
}
public String create() {
if (create)
return CREATE_STRING + " " + name;
else
return INVALID;
}
public String alter() {
if (alter)
return ALTER_STRING + " " + name;
else
return INVALID;
}
}
Donde se puede llamar:
System.out.println(SQL.TABLE.create()); // CREATE TABLE
System.out.println(SQL.TABLE.alter()); // ALTER TABLE
System.out.println(SQL.DATABASE.alter()); // INVALID
System.out.println(SQL.DATABASE.create()); // CREATE DATABASE
No hay necesidad de reinventar la rueda. Solo use Hibernate o myBatis – DwB
@DwB Usar bibliotecas de terceros no siempre es una opción deseable. A veces son excesivos para el proyecto en el que estás trabajando. –
@PavlosGeorgiou Agregué una solución secundaria a mi respuesta, está un poco más cerca de lo que estás preguntando aunque todavía no enum dentro de enum. –