尽量不要使用枚举作为请求和响应参数

在阿里巴巴开发手册中有这样一条强制规定值得大家关注:

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

通常情况下,服务端(二方库提供者)会先上线,客户端(二方库使用者)陆续更新。

基于这种情况,如果枚举类新增了一个字段,接口返回了这个新字段,客户端未更新的话,必然出现枚举反序列化失败错误。

而枚举作为参数就不一样了,客户端发送的枚举字段在服务端都有(服务端为了兼容性,一般不会删除枚举字段),并不会出现错误。

当然,如果要使用枚举作为接口返回值,也不是没有办法。这就需要自己编写枚举序列化代码,相对来说会麻烦一点。

所以,简单起见,尽量不要使用枚举作为请求和响应参数,而是使用 code 作为请求和响应参数,即枚举仅在项目内部使用。

参考资料
Java枚举什么不好,《阿里巴巴JAVA开发手册》对于枚举规定的考量是什么?

posted @ 2022-10-15 16:33  ageovb  阅读(560)  评论(0编辑  收藏  举报