为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?

本文探讨了《阿里巴巴Java开发手册》中禁止接口返回值使用枚举的原因,通过星巴克的示例说明了枚举类型在接口升级时可能导致的序列化异常和兼容性问题。建议使用基本类型或其包装类以避免此类问题。读者被鼓励分享对此规约的看法。
摘要由CSDN通过智能技术生成

在阅读《阿里巴巴Java开发手册》时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下:

在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内部发布到中央仓库,可供公司内部其他应用依赖的库(jar 包)。

那么一方库便是本工程内部子项目模块依赖的库;三方库为公司之外的开源库,比如像 fastjson、easyexcel 这种。

下面我们就通过一个例子来看下为什么阿里巴巴不允许返回枚举类型或者包含枚举类型的 POJO 对象。

比如星巴克提供了 0.0.1 版本的二方库,定义了一个 Starbucks 类,里面包含了枚举类型的 SizeEnum,里面分别是中杯、大杯、特大杯。

public class Starbucks implements Serializable {
  private Long id;
  private String name;
  private Integer capacity;
  private SizeEnum sizeEum;
}

public enum SizeEnum {
  TALL(1),
  GRANDE(2),
  VENTI(3)
}

定义了一个服务类,实现了根据 id 获取星巴克的方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值