用法:
- package com.wjq.enums;
- // 用户状态
- // 0: 正常状态 (已注册)
- // 1: 已被封号 (已注册)
- public enum UserState {
- NORMAL(0),
- SEALED(1);
- private final int value;
- private UserState(int value) {
- this.value = value;
- }
- public int getValue() {
- return value;
- }
- public static void main(String[] args) {
- // 输出结果是 1
- System.out.println(UserState.SEALED.getValue());
- }
- }
原理:
经过编译器编译后, 枚举类变成抽象类, 继承 java.lang.Enum 枚举中定义的枚举常量, 变成 public static final 属性, 通过内部类来实现同时, 其类型是抽象类的类型, 名字是枚举常量的名字, 通过静态代码块来初始化枚举常量不能通过克隆以及序列化和反序列化来复制枚举, 保证一个枚举常量是单例
参考资料
java 枚举类型的实现原理
来源: http://www.bubuko.com/infodetail-2513540.html