美文网首页
枚举类专题

枚举类专题

作者: 攻城老狮 | 来源:发表于2021-05-26 09:22 被阅读0次

1 枚举类的特征

  • 枚举类的值是有限的几个值。只读不需要修改

  • 枚举是一组常量的集合,只包含一组有限的特定的对象

  • 实现枚举有两种方式

    • 自定义类实现

    • enum关键字实现

2 自定义类

2.1 自定义类的特征

  • 不需要提供setXXX方法,因为通常枚举类为只读
  • 对枚举对象使用 final+static修饰,实现底层优化
  • 枚举对象名通常使用全部大写,常量的命名规范
  • 枚举对象可以有多个属性

2.2 自定义类实现枚举类的步骤

  • 构造器私有化
  • 本类内部创建一组对象
  • 对外暴露对象(public final static)
  • 可以提供get方法,不要提供set方法

2.3 自定义类的使用

public class DefineEnum {
    public static void main(String[] args) {
        System.out.println(Role.ADMIN);
        System.out.println(Role.MANAGER);
        System.out.println(Role.GUEST);
    }
}

class Role{
    private String name;
    private String desc;

    public static final Role ADMIN = new Role("admin","desc admin");
    public static final Role MANAGER = new Role("manager","desc manager");
    public static final Role GUEST = new Role("guest","desc guest");

    private Role(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Role{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

3 enum关键字实现枚举

3.1 enum关键字的特征

  • 使用enum关键字开发一个枚举类,默认会继承Enum类,而且是一个final类
  • 传统的 public static final Role ADMIN = new Role("admin","desc admin"); 简化为 ADMIN(“admin”,"desc admin"),必须知道调用的是哪个构造器
  • 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略
  • 多个枚举对象时,使用逗号间隔,最后一个分号结尾
  • 枚举对象必须在枚举类的行首

3.2 enum实现上述枚举

public class EnumClass {
    public static void main(String[] args) {
        System.out.println(Role.ADMIN);
        System.out.println(Role.MANAGER);
        System.out.println(Role.GUEST);
    }
}

enum  Role{
    ADMIN("admin","desc admin"),MANAGER("manager","desc manager"),GUEST("guest","desc guest");

    private String name;
    private String desc;


    private Role(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }
}

3.3 enum常用方法

public class EnumClass {
    public static void main(String[] args) {
        //1.toString Enum类已经重写,返回当前对象名字,子类可重写
        System.out.println(Role.ADMIN.toString());
        //2.name 返回当前对象名,子类不能重写 final的
        System.out.println(Role.ADMIN.name());
        //3.ordinal 返回当前对象的位置号,默认从0开始
        System.out.println(Role.GUEST.ordinal());
        //4.values 返回当前枚举类所有的常量
        Role[] roles = Role.values();
        for (Role role : roles) {
            System.out.println(role);
        }
        //5.valueOf 将字符串转换为枚举对象,要求字符串必须为已有常量名
        Role manager = Role.valueOf("MANAGER");
        System.out.println(manager);
        //6.compareTo 比较两个枚举类常量,比较的是编号
        System.out.println(Role.ADMIN.compareTo(Role.GUEST));
    }
}

enum  Role{
    ADMIN("admin","desc admin"),MANAGER("manager","desc manager"),GUEST("guest","desc guest");

    private String name;
    private String desc;


    private Role(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }
}
  • result
ADMIN
ADMIN
2
ADMIN
MANAGER
GUEST
MANAGER
-2

3.4 enum实现接口

  • enum关键字使用后,不能再继承其他类,因为enum会隐式继承Enum类,而Java是单继承
  • 枚举类和普通类一样可以实现接口 enum 类名 implements 接口1,接口2 { }

相关文章

  • 枚举类专题

    1 枚举类的特征 枚举类的值是有限的几个值。只读不需要修改 枚举是一组常量的集合,只包含一组有限的特定的对象 实现...

  • 枚举

    如何定义枚举类 什么枚举类:类里的对象是有限个,可以枚举出来 如何使用enum定义枚举类 枚举...

  • Java篇-枚举的使用

    一 : 自定义枚举类 枚举类调用 二 : 使用enum关键字定义枚举类 让枚举类实现接口: 可以让不同的枚举类的对...

  • 枚举--java24(02/17/2016)

    如何自定义枚举类如何使用enum定义枚举类、枚举类的主要方法实现接口的枚举类 JDK1.5之前需要自定义枚举类JD...

  • java enum实现原理

    一、分析自定义枚举类 普通的枚举类和抽象枚举类相似,故直接分析抽象枚举类。 1. 编写一个抽象枚举类 2. 编译 ...

  • 枚举_enum

    遍历 枚举类: 测试类 反射获取值 枚举类: 测试类:

  • Chapter 8 . 枚举

    阅读原文 Chapter 8 . 枚举 8.1 枚举类 主要内容: 如何自定义枚举类 如何使用enum定义枚举类 ...

  • Java高级-枚举类与注解

    10.1.枚举类的使用: 入门 类的对象只有有限个,确定的 自定义枚举类 一.枚举类的使用1.枚举类的理解: 类的...

  • 枚举保存到数据库中为序号解决方案

    普通枚举转换配置 枚举类 枚举转换类 @Converter(autoApply = true)自动适应 在实体类中...

  • 枚举类

    什么是枚举类? 枚举类的使用 枚举类的理解:类的对象只有有限个,确定的,我们称此类为枚举类。确定则意味着不能再通过...

网友评论

      本文标题:枚举类专题

      本文链接:https://www.haomeiwen.com/subject/vsxhsltx.html