由于业务需要,需要用到对象拷贝,修改拷贝得到的对象不会影响原来的对象,旧对象和新对象为两个完全独立的bean.
注意:拷贝的对象是实体类, 必须实现序列化接口. 实际使用中遇到一个问题,通过拷贝得到的新对象中有两个属性的值丢失了, 但是其他大部分的属性值都是正常的.
经过排查发现,丢失值的那两个属性是通过继承父类BaseDomain得到的. 但是父类BaseDomain并没有实现序列话接口. 经测试正是由于父类BaseDomain没有实现序列化接口导致拷贝时属性丢失的. 让父类BaseDomain实现序列化接口则解决了.
public Object getCopyObject(Object object) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(out);
objectOutputStream.writeObject(object);
byte[] byteArray = out.toByteArray();
ByteArrayInputStream input = new ByteArrayInputStream(byteArray);
ObjectInputStream objectInputStream = new ObjectInputStream(input);
Object newObject = objectInputStream.readObject();
return newObject;
}
关于子类是否能够继承父类中的私有属性: