枚举简介

2020-06-10  本文已影响0人  大黑跟小白的日常

问题描述

1、Result封装返回消息,用String接收message存在的问题;

2、服务层暴露一个接口供其它服务调用,比如根据用户id、订单状态查询订单数据,接口请求参数设置为 Integer userId, Integer status存在的问题;

作用

主要作用:规定某个类的实例只有哪一些可以在程序中使用,进一步可以约定方法参数取值范围,还可以约定类的行为只能有哪几种实现方式;

枚举是一种独特的Java类型

enum 定义的枚举类 默认继承 java.lang.Enum 类;

枚举的本质是 java.lang.Enum 的子类;

枚举实例实则都是枚举类的静态匿名内部类实例对象;

代码描述

模拟枚举类

/**
 * @Author G_Y
 * @Date 2020/6/10 10:25
 * @Description: 模拟枚举类
 **/
public abstract class LikeEnum {
    public abstract void f();
    private String message;
    private LikeEnum(String message){
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
    public static final LikeEnum A_BEAN = new LikeEnum("A_BEAN"){
        @Override
        public void f() {
            System.out.println("第一种行为");
        }
    };
    public static final LikeEnum B_BEAN = new LikeEnum("B_BEAN"){
        @Override
        public void f() {
            System.out.println("第二种行为");
        }
    };
    public static final LikeEnum C_BEAN = new LikeEnum("C_BEAN"){
        @Override
        public void f() {
            System.out.println("第三种行为");
        }
    };
}

真实枚举类

/**
 * @Author G_Y
 * @Date 2020/6/10 10:47
 * @Description: 枚举类
 **/
public enum RealEnum {
    A_BEAN("A_BEAN"){
        @Override
        public void f() {
            System.out.println("第一种行为");
        }
    },
    B_BEAN("B_BEAN"){
        @Override
        public void f() {
            System.out.println("第二种行为");
        }
    },
    C_BEAN("C_BEAN"){
        @Override
        public void f() {
            System.out.println("第三种行为");
        }
    };
    public abstract void f();
    private String message;
    private RealEnum(String message){
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
}

具体使用

public class Test {
    public static void main(String[] args) {
        new Test().testServicePro(RealEnum.A_BEAN);
    }
    public void testServicePro(RealEnum realEnum) {
        // 执行一个动作
        realEnum.f();
        // 访问数据库 string
        String message = realEnum.getMessage();
        System.out.println(message);
    }
}

封装结果提示消息

/**
 * @Author G_Y
 * @Date 2020/6/10 9:45
 * @Description: 返回调用方的Result对象
 **/
public class Result {
    private String message;
    private Integer code;
    private Object data;
    private Boolean success;
    public Result(Object data, EResultCode eResultCode) {
        this.data = data;
        this.success = eResultCode.getSuccess();
        this.code = eResultCode.getCode();
        this.message = eResultCode.getMessage();
    }
}
/**
 * @Author G_Y
 * @Date 2020/6/10 9:45
 * @Description: 提示信息封装
 **/
public enum EResultCode {
    /**
     * "操作成功",2000,Boolean.TRUE
     */
    SUCCESSED("操作成功",2000,Boolean.TRUE),
    /**
     * "非法参数",5001,Boolean.FALSE
     */
    ILLEGAL_PARAMETER("非法参数",5001,Boolean.FALSE);
    private String message;
    private Integer code;
    private Boolean success;
    private EResultCode(String message,Integer code,Boolean success){
        this.code = code;
        this.message = message;
        this.success = success;
    }
    public String getMessage() {
        return message;
    }
    public Integer getCode() {
        return code;
    }
    public Boolean getSuccess() {
        return success;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读