java enum深入解析

1 关于 java enum

java1.5 引入的enum ,它是一种新的类型,因为一些方法运行的时候,它需要的数据不是任意的,而必须是一定范围类的值。

 

2 java enum简单示例

public enum Season{

 

spring,summer,autumn,winter;

 

 }

 

 

枚举对象里面的值都必须是唯一的。

可以通过Enum类型名直接引用该常量,如Season.spring,Season.summer等等

枚举类的每一个枚举值实际上就是枚举类的一个实例对象,为什么这么说呢,我们来看看在jdk1.5 enum出现之前是如何实现的

public final class Season{

public static final Season spring=new Season();

public static final Season summer=new Season();

public static final Season autumn=new Season();

public static final Season winter=new Season();

private Season(){

}

}

3 java enum复杂用法:

 

public enum Season{

spring("3月-5月"),summer("6月-8月"),autumn("9月-11月"),winter("12月-2月")

}

private final String time;

private Season(String time){

this.time=time;

}

public String getTime{

return time;

}

}

 

4 java enum的实现原理

Java Enum类型的语法结构尽管和java类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>

public final class Season extends java.lang.Enum{

 

public static final Season spring;

public static final Season summer;

public static final Season autumn;

public static final Season winter;

static{

}

public java.lang.String getTime();

public static Season[] values();

public static Season valueOf(java.lang.String);

}

标签