背景
我们在进行传输的时候 会有一些状态值,如Status为1代表删除,为0代表失败或者怎么样的。只传输一个)0或者1过去给第三方(此处不包括给前端),如果没有契约第三方会不认识你这个是什么意思,那我们在平时写业务逻辑的时候使用枚举很轻易就知道了什么状态什么值。所以我们在构建DTO对象的时候里面放一个枚举来表示。
首先在阿里的规范里是这样说的:
【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象。那到底为啥不能用呢?
枚举
首先我们得先思考一下枚举是否可以进行序列化,我们在把对象进行传输的时候需要将这个对象序列化为字节序列进行传输(在linux中一切皆文件,JVM虚拟机将对象变为字节给到内核通过传输协议进行打包传)枚举在进行编译后会生成一个相关的类,这个类,这个类继承了JavaAPI中的java.lang.Enum类。那么我们看看这个类,毫无疑问可以序列化。继承了Serializable接口。那么就肯定就是可以序列化了。
Enum实战序列化
- 创建一个枚举类
package SerializableEnum;
/**
* @Author:yuanxindong
* @Date:2020/5/101:33
*/
public enum PersonEnum {
/**
* 小圆
*/
YUANXINDONG("yuanxindong",1);
;
private String age;
private int i;
PersonEnum(String yuanxindong, int i) {
this.age = yuanxindong;
this.i = i;