如果類的物件的數量只有有限個,并且可以確定物件的屬性,那么考慮使用列舉類,例如:
- 性別:Man(男)、Woman(女)
- 訂單狀態:Nonpayment(未付款)、Paid(已付款)、Delivered(已發貨)、Checked(已確認識訓)
定義列舉型別
public enum UserType {
// 1.提供列舉類的物件(列舉常量)
common("普通用戶", 0),
sectionAdmin("板塊管理員", 1),
superAdmin("超級管理員", 2);
// 2.物件的屬性
private String typeName;
private Integer typeId;
// 3.私有化構造器(private 可省略)
private UserType(String typeName, Integer typeId) {
this.typeName = typeName;
this.typeId = typeId;
}
}
介紹列舉型別
如果需要的話,可以在列舉型別中添加一些構造器、方法和域,當然,構造器只是在構造列舉常量的時候被呼叫,
所有的列舉型別都是 Enum 類的子類,它們繼承了這個類的許多方法,其中最有用的一個是 toString() 方法,這個方法能夠回傳列舉常量名,例如,Size.SMALL.toString() 將回傳字串 “SMALL”,
toString() 的逆方法是 valueOf() 靜態方法,例如,陳述句:Size s = Enum.valueOf(Size.class, "SMALL"); 將變數 s 設定成 Size.SMALL,
每個列舉型別都有一個靜態的 values() 方法,它將回傳一個包含全部列舉值的陣列,
ordinal 方法回傳 enum 宣告中列舉常量的位置,位置從 0 開始計數,例如:Size.SMALL.ordinal() 回傳 0,
public static void main(String[] args) {
// [common, sectionAdmin, superAdmin]
UserType[] userTypes = UserType.values();
// 回傳具有指定名稱的列舉常量
UserType common = UserType.valueOf("common");
// 回傳具有指定名稱的指定列舉型別的列舉常量
UserType common1 = Enum.valueOf(UserType.class, "common");
// 回傳列舉常量的名稱 (Enum 類重寫了 toString() )
String name = common.toString();
}
列舉類實作介面
情況一:把列舉類當作正常的類,在類中實作介面
情況二:每個列舉常量分別實作介面
public enum UserType implements UserService {
// 1.提供列舉類的物件
common("普通用戶", 0) {
@Override
public void method() {
}
},
sectionAdmin("板塊管理員", 1) {
@Override
public void method() {
}
},
superAdmin("超級管理員", 2) {
@Override
public void method() {
}
};
// 2.物件的屬性
private String typeName;
private Integer typeId;
// 3.私有化的構造器
private UserType(String typeName, Integer typeId) {
this.typeName = typeName;
this.typeId = typeId;
}
}
參考資料
《Java核心技術卷一:基礎知識》(第10版)第5章:5.6 列舉類
本文來自博客園,作者:真正的飛魚,轉載請注明原文鏈接:https://www.cnblogs.com/feiyu2/p/enum.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552307.html
標籤:其他
下一篇:返回列表
