面试官:Java中是否直接可以使用enum进行传输

背景

我们在进行传输的时候 会有一些状态值,如Status为1代表删除,为0代表失败或者怎么样的。只传输一个)0或者1过去给第三方(此处不包括给前端),如果没有契约第三方会不认识你这个是什么意思,那我们在平时写业务逻辑的时候使用枚举很轻易就知道了什么状态什么值。所以我们在构建DTO对象的时候里面放一个枚举来表示。

首先在阿里的规范里是这样说的:

【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象。那到底为啥不能用呢?

枚举

首先我们得先思考一下枚举是否可以进行序列化,我们在把对象进行传输的时候需要将这个对象序列化为字节序列进行传输(在linux中一切皆文件,JVM虚拟机将对象变为字节给到内核通过传输协议进行打包传)枚举在进行编译后会生成一个相关的类,这个类,这个类继承了JavaAPI中的java.lang.Enum类。那么我们看看这个类,毫无疑问可以序列化。继承了Serializable接口。那么就肯定就是可以序列化了。

Enum实战序列化

  1. 创建一个枚举类
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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值