Enum枚举类

创建一个枚举类:

public enum MyEnum {
    A("AA"),B("BB"),C("CC");

    String value;

    MyEnum(String value) {
        this.value = value;
    }
}

编译之后,拿到字节码文件进行反编译:

public final class MyEnum extends Enum
{

	public static final MyEnum A;
	public static final MyEnum B;
	public static final MyEnum C;
	String value;
	private static final MyEnum $VALUES[];

	public static MyEnum[] values()
	{
		return (MyEnum[])$VALUES.clone();
	}

	public static MyEnum valueOf(String name)
	{
		return (MyEnum)Enum.valueOf(com/zq/provider/MyEnum, name);
	}

	private MyEnum(String s, int i, String value)
	{
		super(s, i);
		this.value = value;
	}

	static 
	{
		A = new MyEnum("A", 0, "AA");
		B = new MyEnum("B", 1, "BB");
		C = new MyEnum("C", 2, "CC");
		$VALUES = (new MyEnum[] {
			A, B, C
		});
	}
}

反编译之后,可以看到:

  1. 我们创建的枚举类是继承Enum的final类
  2. 枚举类中声明的枚举值其实就是该枚举类的静态常量引用,并会声明一个静态常量的引用数组。枚举值是public,而引用数组为private。
  3. 静态代码块中对枚举值和引用数组初始化,构造函数默认就有两个参数,默认参数为枚举变量名,数值(1,2,3),调用super方法,给父类构造函数初始化,我们给的枚举值则是第三个参数。
private MyEnum(String s, int i, String value)
	{
		super(s, i);
		this.value = value;
	}
  1. 自动生成两个公共静态方法values和valueOf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值