JavaSE基础-enum枚举

目录

枚举描述

常用方法

枚举用法

枚举类定义抽象方法

枚举类实现接口


枚举描述

枚举类是JDK1.5中才出现的新特性,它是一种特殊的数据类型,在Java中用enum关键字来修饰,enum的全称是enumeration。所有被enum修饰的类都会默认的继承自java.lang.Enum这个类,而不是Object类。

  1. 通过编译后生成的枚举类发现枚举类默认继承了Enum类并且使用final修饰,所以枚举类不能被继承也无法继承其他类。

  2. 枚举类变量必须放在第一行,如果枚举类变量有构造器,那么分号必须加上,否则可以省略。

  3. 枚举类的构造器必须是private的,系统会自动设置为private,我们也可以自己加上,但是不能用public等修饰符,否则会报错。

 public enum StatusCodes {
     
     CODE_000000("M0U000000", "成功"),
     
     CODE_510000("M0U510000", "参数错误,无效请求参数"),
     
     CODE_520000("M0U520000", "第三方服务调用异常"),
 ​
     CODE_520001("M0U520001", "第三方服务调用连接超时"),
 ​
     CODE_520002("M0U520002", "第三方服务调用读超时"),
 ​
     CODE_530000("M0U530000", "消息队列生产数据失败"),
     
     CODE_540000("M0U540000", "第三方SFTP服务器失败"),
 ​
     CODE_550000("M0U550000", "对象存储服务调用失败"),
 ​
     CODE_560000("M0U560000", "RPC调用第三方服务异常"),
 ​
     CODE_570000("M0U570000", "系统繁忙请稍后再试..."),
 ​
     CODE_590000("M0U590000", "读取配置文件异常"),
 ​
     CODE_999999("M0S999999", "系统内部异常");
     
     private String statusCode;
     
     private String statusDesc;
 ​
     StatusCodes(String statusCode, String statusDesc) {
         this.statusCode = statusCode;
         this.statusDesc = statusDesc;
     }
 ​
     public String getStatusCode() {
         return statusCode;
     }
 ​
     public void setStatusCode(String statusCode) {
         this.statusCode = statusCode;
     }
 ​
     public String getStatusDesc() {
         return statusDesc;
     }
 ​
     public void setStatusDesc(String statusDesc) {
         this.statusDesc = statusDesc;
     }
 ​
 }

常用方法
  1. valueOf(String name) 方法:返回具有指定名称的指定枚举类型的枚举常量(区分大小写),如果没有则报错。

  2. values()方法:返回枚举类中包括所有枚举对象的数组。该方法可以很方便地遍历枚举值。

  3. name()方法:返回当前枚举类对象的名称。它和toString()方法是一模一样的。

  4. ordinal()方法:返回此枚举常数的序数(其枚举声明中的位置,其中初始常数的序数为零)。

  5. toString()方法:返回当前枚举类对象的名称,等同于name()方法。

枚举用法

枚举类定义抽象方法
 public enum EnumDemo {
 ​
     FIRST{
         @Override
         public String getInfo() {
             return "FIRST TIME";
         }
     },
     SECOND{
         @Override
         public String getInfo() {
             return "SECOND TIME";
         }
     };
 ​
     /**
      * 定义抽象方法
      * @return
      */
     public abstract String getInfo();
 ​
     //测试
     public static void main(String[] args){
         System.out.println("F:"+EnumDemo3.FIRST.getInfo());
         System.out.println("S:"+EnumDemo3.SECOND.getInfo());
     }
 }
 ​
 结果:
 F:FIRST TIME
 S:SECOND TIME

枚举类实现接口
 interface Behaviour{
     String show();
 }
 ​
 public enum Season implements Behaviour{
     SPRING("春暖花开"),
     SUMMER("夏日炎炎"),
     AUTUMN("秋高气爽"),
     WINNER("冬暖夏凉");//此时的分号不能省略
 ​
     private String name;
 ​
     //系统默认构造器是private,而且必须是private的,用public则会报错
     Season(String name) {
         this.name = name;
     }
 ​
     @Override
     public String show() {
         return this.name;
     }
 }
 ​
 class Test{
     public static void main(String[] args) {
         for (Season season:Season.values()){
             System.out.println(season.show());
         }
     }
 }
 public interface Season {
     enum Spring implements Season{
         //立春,雨水,清明
         SPRING_BEGINS,RAIN,TOMB_SWEEPING
     }
     enum Summer implements Season{
         //夏至,芒种,小暑,大暑
         SUMMER_BEGINS,GRAIN_INE_EAR,SLIGHT_HEAD,GREAT_HEAD
     }
     enum AUTUMN implements Season{
         //立秋,寒露,霜降
         AUTUMN_BEGINS,COLD_DEW,FROST
     }
     enum WINTER implements Season{
         //立冬,小雪,大雪,冬至
         WINTER_BEGINS,LIGHT_SNOW,HEAVY_SNOW,WINTER_SOLSTICE_FESTIVAL
     }
 }
 ​
 class Test{
     public static void main(String[] args) {
         //遍历Spring
         Season.Spring[] values = Season.Spring.values();
         for (Season season:values){
             System.out.println(season);
         }
     }
 }
 //运行结果:
 //SPRING_BEGINS
 //RAIN
 //TOMB_SWEEPING
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值