在编写阿里中间件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.