当前位置 : 主页 > 编程语言 > c++ >

对于缓存中取出来的对象,进行深度克隆

来源:互联网 收集:自由互联 发布时间:2021-07-03
对缓存中取出来的对象,进行增删改,却不想缓存对象的值受影响,就可以用深度克隆操作 @SuppressWarnings("unchecked") public static T cloneObjectFrom(T src) throws RuntimeException { ByteArrayOutputStream memoryB
对缓存中取出来的对象,进行增删改,却不想缓存对象的值受影响,就可以用深度克隆操作
@SuppressWarnings("unchecked")
    public static 
 
   T cloneObjectFrom(T src) throws RuntimeException {
        ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
        ObjectOutputStream out = null;
        ObjectInputStream in = null;
        T dist = null;
        try {
            out = new ObjectOutputStream(memoryBuffer);
            out.writeObject(src);
            out.flush();
            in = new ObjectInputStream(new ByteArrayInputStream(memoryBuffer.toByteArray()));
            dist = (T) in.readObject();
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            if (out != null)
                try {
                    out.close();
                    out = null;
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            if (in != null)
                try {
                    in.close();
                    in = null;
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
        }
        return dist;
    }
 
网友评论