重点:实体实现序列化接口
public class PojoStr implements Serializable {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
public class CopyUtils {
@SuppressWarnings("unchecked")
public static <T> List<T> deepCopyList(List<T> src) {
List<T> dest = null;
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
dest = (List<T>) in.readObject();
} catch (IOException e) {
} catch (ClassNotFoundException e) {
}
return dest;
}
}
public class TestPojo {
public static void main(String[] args) {
List<PojoStr> listPojoStr0 = new ArrayList<>();
PojoStr p1 = new PojoStr();
p1.setStr("xxx1");
listPojoStr0.add(p1);
PojoStr p2 = new PojoStr();
p2.setStr("xxx2");
listPojoStr0.add(p2);
PojoStr p3 = new PojoStr();
p3.setStr("xxx3");
listPojoStr0.add(p3);
List<PojoStr> listPojoStr5 = CopyUtils.deepCopyList(listPojoStr0);
listPojoStr0.get(0).setStr("mada");
for (int i = 0, l = listPojoStr0.size(); i < l; i++) {
System.out.println("listPojoStr0的第" + i + "个值为:" + listPojoStr0.get(i).getStr());
System.out.println("listPojoStr5的第" + i + "个值为:" + listPojoStr5.get(i).getStr());
System.out.println("------------------------------------------------");
}
}
}