之前使用 thrift 的时候,给同事提供了接口,但是他调用我这边也返回值一直错误,我这边日志也显示入参为默认值。
后面发现是他直接使用 object.filed 进行赋值,由于我这边将属性设置的 optional 可选字段,导致他赋值无效。这里是因为 thrift 里面有个 isSet 的方法,如果直接通过属性进行赋值 isSet 方法为 false,因此在 rpc 调用的时候并没有把对应的属性序列化并传出,所以返回值一直为默认值。
因此,optional 赋值必须用 set 方法赋值。如果是 required 必填字段,可以直接用对属性进行赋值。