Java 枚舉用法和原理
阿新 • • 發佈:2018-03-03
HR rgs ring mil 代碼 package 輸出結果 資料 clas
用法:
1 package com.wjq.enums;
2
3 // 用戶狀態
4 // 0:正常狀態(已註冊)
5 // 1:已被封號(已註冊)
6 public enum UserState {
7 NORMAL(0), SEALED(1);
8
9 private final int value;
10
11 private UserState(int value) {
12 this.value = value;
13 }
14
15 public int getValue() {
16 return value;
17 }
18
19 public static void main(String[] args) {
20 // 輸出結果是1
21 System.out.println(UserState.SEALED.getValue());
22 }
23 }
原理:
經過編譯器編譯後,枚舉類變成抽象類,繼承java.lang.Enum。枚舉中定義的枚舉常量,變成public static final屬性,通過內部類來實現。同時,其類型是抽象類的類型,名字是枚舉常量的名字,通過靜態代碼塊來初始化枚舉常量。不能通過克隆以及序列化和反序列化來復制枚舉,保證一個枚舉常量是單例。
參考資料
java枚舉類型的實現原理
Java 枚舉用法和原理