java对象深度克隆

java对象深度克隆的方法:

 

Java代码
  1. public static final Object deepClone(Object obj){  

  2.        if(logger.isDebugEnabled()){  

  3.            logger.debug("开始深度克隆对象");  

  4.        }  

  5.        ByteArrayOutputStream bo = null;  

  6.        ObjectOutputStream oo = null;  

  7.        ByteArrayInputStream bi = null;  

  8.        ObjectInputStream oi = null;  

  9.        Object resultObject = null;  

  10.        try {  

  11.            //将对象写到流里  

  12.            if(logger.isDebugEnabled()){  

  13.                logger.debug("将对象写入二进制流");  

  14.            }  

  15.            bo=new ByteArrayOutputStream();  

  16.            oo=new ObjectOutputStream(bo);  

  17.            oo.writeObject(obj);  

  18.            //从流里读出来  

  19.            if(logger.isDebugEnabled()){  

  20.                logger.debug("在二进制流中将对象读出");  

  21.            }  

  22.            bi=new ByteArrayInputStream(bo.toByteArray());  

  23.            oi=new ObjectInputStream(bi);  

  24.              

  25.            resultObject = oi.readObject();  

  26.  

  27.        } catch (IOException e) {  

  28.            // TODO Auto-generated catch block  

  29.            e.printStackTrace();  

  30.        } catch (ClassNotFoundException e) {  

  31.            logger.fatal("没有找到对应的类");  

  32.        } finally{  

  33.            if(logger.isDebugEnabled()){  

  34.                logger.debug("关闭流对象");  

  35.            }  

  36.            try {  

  37.                if(oi != null){  

  38.                        oi.close();  

  39.                    oi = null;  

  40.                }  

  41.                if(bi != null){  

  42.                    bi.close();  

  43.                    bi = null;  

  44.                }  

  45.                if(oo != null){  

  46.                    oo.close();  

  47.                    oo = null;  

  48.                }  

  49.                if(bo != null){  

  50.                    bo.close();  

  51.                    bo = null;  

  52.                }  

  53.            } catch (IOException e) {  

  54.                logger.error("",e);  

  55.            }  

  56.        }  

  57.        return resultObject;  

  58.    }  

     

你可能感兴趣的:(java)