栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java/枚举

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java/枚举

本质

枚举:被final修饰&&继承java.lang.Enum枚举值:被public static final修饰构造函数:被private修饰 特点

单例:

枚举值:被public static final修饰构造方法:被private修饰

线程安全:

枚举值:都是static的,是线程安全的,只会被初始化1次,只会被1个线程初始化1次

反序列化安全:

序列化:java仅将枚举对象的name属性输出到结果中反序列化:通过java.lang.Enum的valueOf方法来根据name查找枚举对象。编译器是不允许对这种序列化机制的定制的,因此禁用了writeObject、readObject、readObjectNoData、writeReplace和readResolve等方法 使用 无自定义属性

public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}

反编译

public final class xcrj.Season extends java.lang.Enum
...
{                                                      
  public static final xcrj.Season SPRING;
    descriptor: Lxcrj/Season;            
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM 
                                                       
  public static final xcrj.Season SUMMER;
    descriptor: Lxcrj/Season;            
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM 
                                                       
  public static final xcrj.Season AUTUMN;
    descriptor: Lxcrj/Season;            
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM 
                                                       
  public static final xcrj.Season WINTER;
    descriptor: Lxcrj/Season;            
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM 
  ...
  public static xcrj.Season[] values();
  public static xcrj.Season valueOf(java.lang.String);
方法使用
public static void main(String[] args) {
    // 枚举值名称数组
    Season[] seasons = Season.values();
    // 根据枚举值名称获取枚举
    Season season = Season.valueOf("SPRING");
    // 获取枚举值的声明顺序
    int order = Season.SPRING.ordinal();
    // 获取枚举值的名称
    String name = Season.SPRING.name();
}
有自定义属性
public enum ErrorCode {
	// 成功
    SUCCESS("00000", "一切 ok"),
    // 一级宏观错误码
    USER_ERROR_0001("A0001", "用户端错误");
    // 错误码
	private final String code;
	// 错误描述
    private final String description;
    
	
    ErrorCode(String code, String description) {
        this.code = code;
        this.description = description;
    }

    
    public String getCode() {
        return code;
    }

    
    public String getDescription() {
        return description;
    }
}

反编译

public final class xcrj.ErrorCode extends java.lang.Enum
...
{
	public static final xcrj.ErrorCode SUCCESS;
		descriptor: Lxcrj/ErrorCode;
		flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

	public static final xcrj.ErrorCode USER_ERROR_0001;
		descriptor: Lxcrj/ErrorCode;
		flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM
	...	
	public static xcrj.ErrorCode[] values();
	public static xcrj.ErrorCode valueOf(java.lang.String);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号