您的位置:首页 > 其它

使用序列化实现对象的拷贝

2017-04-11 10:53 176 查看

一、准备需要拷贝的Bean对象

package com.lsf.object;

import java.io.Serializable;

public class ObjectCloneBean implements Serializable {

private static final long serialVersionUID = -8302871064487814045L;

private String userName;
private String password;

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}


二、用序列化拷贝对象

@SuppressWarnings("unchecked")
public static <T extends Serializable> T clone(T object) {

T cloneObject = null;

try {
// 把母对象写入字节流
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(out);
objOut.writeObject(object);
objOut.close();

// 分配内存,写入原始对象,生成新的对象
ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);

//生成新对象,并转型
cloneObject = (T) objectInputStream.readObject();
objectInputStream.close();

} catch (Exception e) {
e.printStackTrace();
}

return cloneObject;

}


三、测试

public class ObjectCloneTest {

public static void main(String[] args) {

ObjectCloneBean objectCloneBean = new ObjectCloneBean();
ObjectCloneBean newObject = clone(objectCloneBean);

newObject.setUserName("jack");

System.out.println(newObject.getUserName());

}

}


print:jack

THE END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象拷贝