我目前接触到的枚举有两种形式的,一种不带任何参数,一种是定义参数值的,下面都分别记录一下(只是做个记录,如果有不对的,请别喷,留言给我我会改正的)
第一种:
1.直接创建枚举
package xxx.xxx.xxx.xxx.enums;
/**
* 日志类别
*/
public enum LogType {
OPERATION, //默认0操作
INSERT, //1 新增
DELETE, //2 删除
UPDATE, //3 修改
SELECT //4 查询
}
2.调用:只示例了两种.ordinal()和.name()调用,Enum.java中还有别的方法,如果需要调用可以去百度,结果自己执行去看
public static void main(String[] args) {
System.out.println(LogType.INSERT.ordinal());//获取到枚举中每个参数的依次顺序,比如INSERT,是在枚举参数的第二个,枚举顺序从0开始,所以insert就是1
System.out.println(LogType.INSERT.name());//获取到枚举本身的名称,比如INSERT,获取到的就是‘INSERT’
}
第二种:带有参数的枚举
1.创建枚举:这个枚举引用了一个自定义的父级接口,这里也可以在自己方法内声明参数,方法内备注有说明
package xxx.xxx.xxx.xxx.enums;
public enum OrderTypeEnum implements BaseEnum {
// vip订单
VIP_ORDER(1, "001"), //参数中1对应的是code,001对应的msg
// 课程订单
COURSE_ORDER(2, "002"),
;
//引用的BaseEnum 接口中定义的参数(也可已在自己方法内声明,不调用接口),这里可以根据自己的业务去更改,如果需要添加一个参数,记得在本方法声明或是在baseEnum中声明并在本方法中引入,构造方法和get方法中也别忘掉,不然外部调用会取不到值的
private int code;
private String msg;
//构造方法,外部调用的时候可以直接通过构造方法调用,就不用在声明set方法了
OrderTypeEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
//get方法,这里就不解释了
@Override
public int getCode() {
return code;
}
@Override
public String getMsg() {
return msg;
}
}
2.创建枚举引用的父类接口:该接口可以不用,定义的参数可以直接在枚举中声明,如果项目中枚举使用比较多,都有共用参数的话使用上比较好
package com.shangze.szxs.common.enums;
/**
* @Description: 枚举的顶层父类
*/
public interface BaseEnum {
int getCode();
String getMsg();
}
3.调用
public static void main(String[] args) {
System.out.println(OrderTypeEnum.COURSE_ORDER);//虽然在控制台中打印出来的是‘COURSE_ORDER’,但实际是一个已经赋值code为2,msg为002的一个OrderTypeEnum类
System.out.println(OrderTypeEnum.COURSE_ORDER.getMsg());//获取当前定义枚举参数中的msg值
System.out.println(OrderTypeEnum.COURSE_ORDER.getCode());//获取当前定义枚举参数中的code值
}