Java的枚举类
枚举类:java中实例(也叫对象)有限且固定不变的类
枚举类默认继承 java.lang.Enum 类,而不是 Object 类,所以枚举类不能继承其他类,也不能被其他类继承
枚举类是一种特殊的类,它一样可以有自己的成员变量、方法,可以实现一个或多个接口,也可以有自己的构造器。
例如,季节类,它只有4个实例(春、夏、秋、冬),并且这4个实例不会改变。可以用枚举类来表示:
public enum SeasonEnum{
SPRING,SUMMER,FALL,WINTER;
}
枚举的语法:
枚举类的所有实例必须在枚举类的第一行显示列出,
对于枚举的实例,系统会自动给它们加上 public static final 修饰。
枚举类的实例以逗号分隔,分号结束
枚举的作用:
- 限定值的范围,避免非法数据
- 避免常量值的意义不明确
注意:
- 使用 enum 定义的非抽象的枚举类默认会使用 final 修饰,因此非抽象枚举类不能派生子类(即不能被继承)
常用的方法和功能:
values() 枚举类默认的一个方法(不是继承来的),可以返回该枚举类的所有实例
valueOf() 传来一个字符串,然后将它转变为对应的枚举变量。前提是你传的字符串和定义枚举变量的字符串一抹一样,区分大小写。如果你传了一个不存在的字符串,那么会抛出异常。
toString()返回枚举定义枚举变量的字符串
ordinal()获取这个枚举变量一个默认的次序(或者说下标)
//实体类
@Data
@RequiredArgsConstructor
public class Person{
private final Type type;
public static enum Type{ //定义一个枚举类
ONE,TWO,THREE,FOUR,FIVE,SIX
}
}
//测试的方法体
Person.Type[] values = Person.Type.values();
for (Person.Type value : values) {
System.out.println("value = " + value); //遍历打印枚举类
}
System.out.println("Person.Type.ONE = " + Person.Type.ONE);
//output:
value = ONE
value = TWO
value = THREE
value = FOUR
value = FIVE
value = SIX
Person.Type.ONE = ONE
注意:这里的 Type的静态内部类,必须是public类型,否则无法访问
也可以这样定义
public enum Weekday {
MON(1),TUS(2),WED(3),THU(4),FRI(5),SAT(6),SUN(0); //在每个枚举变量的后面加上了一个括号,里面是我们定义的值
//也可以这样
ONE("吃瓜",2,"瓜不冰");
START("使用中", 1),STOP("停用中", 0);
}
注意:
- 一定要把枚举变量的定义放在第一行,并且以分号结尾。
- 构造函数必须私有化,它默认并强制是private

浙公网安备 33010602011771号