早期代码中,直接使用简单的静态常量来表示枚举,例如下面的代码:
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
public static final int SEASON_WINTER = 4 ;
缺点
Java5时新增了enum关键字与class,interface关键字的地位相同,枚举类是一个特殊的类,
它一样可以拥有自己的成员变量,方法,可以实现一个或者多个接口,也可以定义自己的构造器。
枚举类与普通类的区别
枚举类可以实现一个或者多个接口,使用enum定义的枚举类默认继承java.lang.Enum类,而不是默认
继承Objec类。其中,java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
使用enum定义的非抽象枚举类类默认被final修饰,因此不能派生出子类。
枚举构造器默认被private修饰,也只能被private修饰
枚举类的所有实例必须在枚举类的第一行列出,否则这个枚举不能产生实例,列出实例时,系统会自动添加public static final 修饰。
public enum SeasonEnum {
SPRING,
SUMMER,
FALL,
WINTER
}
枚举类测试
public void judge(SeasonEnum s){
switch (s){
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case FALL:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
}
}
@Test
public void testEnum(){
//values()枚举类默认方法,返回该枚举类所有实例
for (SeasonEnum e: SeasonEnum.values()){
//打印 枚举实例.toSting() :"SPRING","SUMMER","FALL","WINTER"
System.out.println(e);
}
this.judge(SeasonEnum.SUMMER);//"夏天"
}
java,lang.Enum的方法
public enum Gender {
MALE,
FEMALE;
public String name;//成员变量
}
测试类
@Test
public void test234(){
Gender female = Enum.valueOf(Gender.class, "FEMALE");
System.out.println(female);//"FEMALE"
System.out.println(female.name);//null
}
上面例子中枚举类的成员变量值不应该可以赋值,定义为不允许修改
public enum Gender {
//此处的枚举值通过调用对应的构造器进行赋值
MALE("男"),
FEMALE("女");
public String name;//成员变量
private Gender(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
测试
@Test
public void test2341(){
Gender female = Gender.FEMALE;
System.out.println(female);//"FEMALE"
System.out.println(female.name);//"女"
}
感谢观看,每天进步一点点