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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix