文章目录

  • 1、定义
  • 2、语法
  • 3、使用
  • 3.1、普通用法
  • 3.2、枚举比较
  • 3.2.1、switch中使用
  • 3.2.2、if中使用
  • 3.3、枚举类型实现接口


1、定义

枚举类型是一个特殊的数据类型,能够为一个变量定义一组预定义的常量。枚举类型属于java类中的一种,可以拥有成员变量和方法。

2、语法

定义枚举类型使用 enum 关键字,它包括枚举项、私有构造方法、成员变量、成员方法。在枚举类中枚举项是就是这个类的对象,它会有自己的属性(变量和方法),所以在定义枚举项时可以调用构造方法,不调用的话直接默认为无参构造方法。

public enum 枚举类名 {
	// 枚举项1, 枚举项2, 枚举项3, ...;
    // 私有构造方法
    // 成员变量
    // 成员方法
}

3、使用

如果需要使用很多常量,并且这些常量用在同一个业务场景,那么可以使用枚举类型。
【注意】

  1. 枚举类型都继承java.lang.Enum,所以枚举类不能再继承其它类型。
  2. 定义枚举项时,多个枚举项之间需要使用 , 隔开,通常使用大写。
  3. 枚举类型的构造方法使用private修饰
  4. 通过 枚举类名.枚举项名称 去访问指定的枚举项
  5. 枚举类型可以实现接口

3.1、普通用法

使用枚举类型后,常量会被封装到枚举项中。枚举项就是一个对象。

public enum StateEnum {
    // 枚举项
    OK("请求成功"),
    ERROR("请求失败");

    private String msg;

    private StateEnum() {
    }

    private StateEnum(String msg) {
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
public class TestEnum {
    public static void main(String[] args) {
        // 枚举项就是一个对象
        StateEnum ok = StateEnum.OK;
        System.out.println(ok);

        System.out.println(StateEnum.OK);
        System.out.println(StateEnum.ERROR);
    }
}

3.2、枚举比较

枚举的比较通常使用在if支语句(switch、if)中,在if语句中,使用 == 进行比较。

3.2.1、switch中使用

switch (StateEnum.ERROR) {
    case OK:
        System.out.println("成功!成功!");
        break;
    case ERROR:
        System.out.println("失败!失败!");
        break;
    default:
        break;
}

3.2.2、if中使用

StateEnum msg = StateEnum.OK;

if (msg == StateEnum.OK) {
    System.out.println("成功!成功!");
} else if (msg == StateEnum.ERROR) {
    System.out.println("失败!失败!");
}

3.3、枚举类型实现接口

枚举类型可以实现接口,实现的方式跟普通的类没什么区别。

public interface HttpCode {
    int getGetCode();
    String getGetDescription();
}
public enum CodeEnum implements HttpCode {
    SUCCESS(200, "OK"),
    PAGE_NOT_FOUND(404, "page not found");

    private int code;
    private String description;

    private CodeEnum() {
    }

    private CodeEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public int getGetCode() {
        return code;
    }

    @Override
    public String getGetDescription() {
        return description;
    }
}
public class CodeTest {
    public static void main(String[] args) {
        CodeEnum codeEnum = CodeEnum.PAGE_NOT_FOUND;

        System.out.println(codeEnum.getGetCode());
        System.out.println(codeEnum.getGetDescription());
    }
}

感谢小伙伴们的关注!
你的点赞、评论、关注、收藏是对博主的最大鼓励!
持续更新JavaSE学习笔记!欢迎订阅专栏!