Java深度拷贝对象

来源:互联网 发布:邮储银行网络培训学员 编辑:程序博客网 时间:2024/04/28 01:18

今天看到一种java类实现了Serializable接口后对象深拷贝的方法,所以记录一下类型,T一定要实现Serializable接口。


public static <T> T CloneObj(T t) throws Exception{    Serializable serializable = (Serializable) t;    return SerializationUtil.clone(serializable);}

public class SerializationUtil {    /**     * 获取一个可Serializable对象的深度拷贝     * 替换 SerializationUtils.clone     * @param srcObj 源对象     * @return Object 深度拷贝对象     */    public static <T> T clone(T t) {        try {            ByteArrayOutputStream baos = new ByteArrayOutputStream();            ObjectOutputStream oos = new ObjectOutputStream(baos);            oos.writeObject(t);            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));            return (T)ois.readObject();        } catch (Exception e) {            Logger.error(e.getMessage(), e);            throw new Exception(e.getMessage(), e);        }    }}



原创粉丝点击