Java中列舉型別Enum的一種使用方式
阿新 • • 發佈:2019-02-13
列舉類定義如下:
public enum Status {
SCUUESS("1", "成功"), FAILED("2", "失敗");
private String value;
private String desc;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
private Status(String value, String desc) {
this.value = value;
this.desc = desc;
}
}
使用的方式如下:
public class StutusTest {
public static void main(String[] args) {
System.out .println(Status.SCUUESS.getValue());
System.out.println(Status.SCUUESS.getDesc());
System.out.println(Status.FAILED.getValue());
System.out.println(Status.FAILED.getDesc());
}
}
再比如,我們在操作資料庫的時候,通常使用數字儲存到資料庫中,但是在介面上顯示的時候,需要展示其中文意思,南無我們就可以通過下邊的方式:
public enum FlightType {
OW(1 , "單程"), RT(2, "往返");
public Integer code;
public String desc;
FlightType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static FlightType getTypeByCode(Integer code) {
FlightType defaultType = FlightType.OW;
for (FlightType ftype : FlightType.values()) {
if (ftype.code == code) {
return ftype;
}
}
return defaultType;
}
public static String getDescByCode(Integer code) {
return getTypeByCode(code).desc;
}
}
這樣的話,我們就可以通過getDescByCode方法獲得其對應的中文。
另外,引數的個數是可以進行變化的,例如下邊:
public enum DatabaseType {
unknown(null, null, null,null),
mysql("com.mysql.jdbc.Driver", "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource", "select 1",Dialect.MYSQL),
h2("org.h2.Driver", "org.h2.jdbcx.JdbcDataSource", "select 1",Dialect.H2),
oracle("oracle.jdbc.driver.OracleDriver", "oracle.jdbc.xa.client.OracleXADataSource", "select 1 from dual",Dialect.ORACLE);
DatabaseType(String driverClassName, String xaDataSourceClassName, String testQuery,Dialect dialect) {
this.driverClassName = driverClassName;
this.testQuery = testQuery;
this.xaDataSourceClassName = xaDataSourceClassName;
this.dialect=dialect;
}
private final String testQuery;
private final String driverClassName;
private final String xaDataSourceClassName;
private final Dialect dialect;
public String getDriverClassName() {
return driverClassName;
}
public String getXaDataSourceClassName() {
return xaDataSourceClassName;
}
public String getTestQuery() {
return testQuery;
}
public Dialect getDialect() {
return dialect;
}
public static DatabaseType fromJdbcUrl(String url) {
if (StringUtils.hasLength(url)) {
Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase();
for (DatabaseType driver : values()) {
String prefix = ":" + driver.name().toLowerCase() + ":";
if (driver != unknown && urlWithoutPrefix.startsWith(prefix)) {
return driver;
}
}
}
return unknown;
}
}