Java 深度拷贝对象FastByteArrayOutputStream

public class Util {

    /**

    * Returns a copy of the object, or null if the object cannot be serialized.

    */

    //深度克隆,克隆的对象和原来是一个

    public static Object deepClone(Object orig) {

        Object obj = null;

        try {

            // Write the object out to a byte array    输出流  深度拷贝对象

            FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();

            //对象输出流

            ObjectOutputStream out = new ObjectOutputStream(fbos);

            //把传进来的对象 写入流中,然后这个流是和拷贝对象的流 连接的  所以这个要拷贝的对象 已经交给这个对象

            out.writeObject(orig);

            out.flush();

            out.close();

            // Retrieve(检索,恢复) an input stream from the byte array and read

            // a copy of the object back in.


            //从这个拷贝对象的流中 获取输入流

            ObjectInputStream in = new ObjectInputStream(fbos.getInputStream());

            //从输入流中读出这个对象

            obj = in.readObject();

        } catch (IOException e) {

            e.printStackTrace();

        } catch (ClassNotFoundException cnfe) {

            cnfe.printStackTrace();

        }

        //返回拷贝的对象

        return obj;

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容