Loading... # 1、定义 枚举类型是一个特殊的数据类型,能够为一个变量定义一组预定义的常量。枚举类型属于java类中的一种,可以拥有成员变量和方法。 # 2、语法 定义枚举类型使用 `enum` 关键字,它包括枚举项、私有构造方法、成员变量、成员方法。在枚举类中枚举项是就是这个类的对象,它会有自己的属性(变量和方法),所以在定义枚举项时可以调用构造方法,不调用的话直接默认为无参构造方法。 ```java has-numbering public enum 枚举类名 { // 枚举项1, 枚举项2, 枚举项3, ...; // 私有构造方法 // 成员变量 // 成员方法 } ``` # 3、使用 如果需要使用很多常量,并且这些常量用在同一个业务场景,那么可以使用枚举类型。 【注意】 1. 枚举类型都继承java.lang.Enum,所以枚举类不能再继承其它类型。 2. 定义枚举项时,多个枚举项之间需要使用 `,` 隔开,通常使用大写。 3. 枚举类型的构造方法使用private修饰 4. 通过 `枚举类名.枚举项名称` 去访问指定的枚举项 5. 枚举类型可以实现接口 ## 3.1、普通用法 使用枚举类型后,常量会被封装到枚举项中。枚举项就是一个对象。 ```java has-numbering 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; } } ``` ```java has-numbering 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中使用 ```java has-numbering switch (StateEnum.ERROR) { case OK: System.out.println("成功!成功!"); break; case ERROR: System.out.println("失败!失败!"); break; default: break; } ``` ### 3.2.2、if中使用 ```java has-numbering StateEnum msg = StateEnum.OK; if (msg == StateEnum.OK) { System.out.println("成功!成功!"); } else if (msg == StateEnum.ERROR) { System.out.println("失败!失败!"); } ``` ## 3.3、枚举类型实现接口 枚举类型可以实现接口,实现的方式跟普通的类没什么区别。 ```java has-numbering public interface HttpCode { int getGetCode(); String getGetDescription(); } ``` ```java has-numbering 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; } } ``` ```java has-numbering 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学习笔记!欢迎订阅专栏! 最后修改:2021 年 10 月 12 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏