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
posted @     阅读(148)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示