java 克隆 对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qing_mei_xiu/article/details/86480720

java 克隆 对象

1.利用序列化和反序列化进行对象的深拷贝

不用实现clone,实现深度拷贝

package com.sinaif.model.admin;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.sinaif.model.enums.ArbitCaseStatusEnum;

public class BaseBean implements Serializable{
   

/**
 * 利用序列化和反序列化进行对象的深拷贝
 * @return
 * @throws Exception
 */
public Object deepClone() throws Exception{
    //序列化
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
//        
        oos.writeObject(this);
        
    //反序列化
    ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
    ObjectInputStream ois = new ObjectInputStream(bis);
    
    return ois.readObject();
}

//    public static void main(String[] args) {
//    	ArbitCaseBean case1 = new ArbitCaseBean();
//    	case1.setId("11111");
//    	case1.setCaptypeid("33343");
//    	
//    	try {
//    		ArbitCaseBean	case2 = (ArbitCaseBean) case1.deepClone();
//			case2.setId("22222");
//			System.out.println(case1.toString());
//			System.out.println(case2.toString());
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//    	
//	}
    
}

猜你喜欢

转载自blog.csdn.net/qing_mei_xiu/article/details/86480720
今日推荐