1. 程式人生 > >Java 枚舉用法和原理

Java 枚舉用法和原理

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 枚舉用法和原理