package com.cheng.improve151suggest.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class CloneUtils { // 克隆一个对象 @SuppressWarnings("unchecked") public static <T extends Serializable> T clone(T obj) { // 克隆产生的对象 T clonedObj = null; try { // 读取对象字节数据 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(obj); oos.close(); // 分配内存空间,写入原始对象,生成新对象 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); //返回新对象,并做类型转换 clonedObj = (T)ois.readObject(); ois.close(); } catch (Exception e) { e.printStackTrace(); } return clonedObj; } }