为什么阿里巴巴RPC接口不允许使用枚举类型?

本文探讨了为什么阿里巴巴的RPC接口不建议使用枚举类型作为返回值,原因是版本升级可能导致的反序列化异常。当二方库升级后,新增的枚举项在未升级的系统中无法解析,从而引发程序中断。《阿里巴巴Java开发手册》对此有明确的规定。文章还提及,虽然参数中可以使用枚举,但返回值避免使用,以确保接口调用的稳定性。
摘要由CSDN通过智能技术生成

}

public Class AResponse{

private Boolean success;

private AType aType;

}

public enum AType{

P_T,

A_B

}

然后B系统依赖了这个二方库,并且会通过RPC远程调用的方式调用AFacadeService的doSth方法。

public class BService {

@Autowired

AFacadeService aFacadeService;

public void doSth(){

ARequest aRequest = new ARequest();

AResponse aResponse = aFacadeService.doSth(aRequest);

AType aType = aResponse.getAType();

}

}

这时候,如果A和B系统依赖的都是同一个二方库的话,两者使用到的枚举AType会是同一个类,里面的枚举项也都是一致的,这种情况不会有什么问题。

但是,如果有一天,这个二方库做了升级,在AType这个枚举类中增加了一个新的枚举项P_M,这时候只有系统A做了升级,但是系统B并没有做升级。

那么A系统依赖的的AType就是这样的:

public enum AType{

P_T,

A_B,

P_M

}

而B系统依赖的AType则是这样的:

public enum AType{

P_T,<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值