美文网首页
Java 深拷贝方法,可以拷贝集合

Java 深拷贝方法,可以拷贝集合

作者: 秋林格瓦斯 | 来源:发表于2022-02-25 17:18 被阅读0次
package a.b.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Collections;
import java.util.List;

/**
 * @author liguoping
 * @since 2022/2/25 17:03
 */
@Slf4j
public class SerializationUtils {
    
    /**
     * 深拷贝
     *
     * @param src 原始数据
     * @param <T> 泛型
     * @return 深拷贝数据
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> deepCopy(List<T> src) {
        ByteArrayOutputStream byteOut = null;
        ObjectOutputStream out = null;
        ByteArrayInputStream byteIn = null;
        ObjectInputStream in = null;
        try {
            byteOut = new ByteArrayOutputStream();
            out = new ObjectOutputStream(byteOut);
            out.writeObject(src);
            byteIn = new ByteArrayInputStream(byteOut.toByteArray());
            in = new ObjectInputStream(byteIn);
            return (List<T>) in.readObject();
        } catch (Exception ex) {
            log.error("深拷贝异常", ex);
        } finally {
            IOUtils.closeQuietly(in);
            IOUtils.closeQuietly(byteIn);
            IOUtils.closeQuietly(out);
            IOUtils.closeQuietly(byteOut);
        }
        return Collections.emptyList();
    }
}

相关文章

网友评论

      本文标题:Java 深拷贝方法,可以拷贝集合

      本文链接:https://www.haomeiwen.com/subject/wwzxrrtx.html