protostuff 序列化 list 不一致问题

在使用Protostuff进行阿里中间件RPC题目代码的序列化时,遇到一个问题:当对象A中包含B对象,B对象含有一个List,并已初始化为rpc-list时,序列化结果不正确。尝试更换Protostuff版本未解决问题,最终采用Kryo库成功解决了序列化不一致的bug。
摘要由CSDN通过智能技术生成

在编写阿里中间件rpc题目代码时,序列化对象用到了ProtoStuff,出现了一个bug,解决方案:这是protostuff的一个bug,更换版本不起作用,换用了Kryo。

问题:对对象A序列化,A中含有B对象,B对象中包含一个List,初始化后含有一项rpc-list,

序列化后生成byte[],我定义为test
 当对test进行反序列话后,却出现了两个rpc-list。
控制台输出的:
print  A-B-List before  serialize
list[0]=rpc-list
print   A-B-List after serialize
list[0]=rpc-list
list[1]=rpc-list
/******************************/

class A

public class A {
    Object C;
 
    public Object getC() {
        return C;
    }
 
    public void setC(Object c) {
        C = c;
    }
     
    public static void main(String[] args) {
        B b = new B();
        A a=new A();
        a.setC(b);
         
        B bb=(B)a.getC();
        System.out.println("print  A-B-List before  serialize");
        for (int i = 0; i < bb.getList().size(); i++) {
            System.out.println("list["+i+"]="+bb.getList().get(i));
        }
        byte[] test=SerializationUtil.serialize(a);
        A newA=SerializationUtil.deserialize(test, A.class);
        bb=(B)newA.getC();
        System.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值