public class CloneDemo { public static void main(String[] args) { B b = new B(); b.setName("B name"); A a1 = new A(); a1.setB(b); a1.setName("A name"); A a2 = a1.cloneMyself(); System.out.println(a1 == a2);//false System.out.println(a1.getB() == a2.getB());//false } } class A implements Serializable{ /** * */ private static final long serialVersionUID = -1556039944244358522L; private String name; private B b; public String getName() { return name; } public void setName(String name) { this.name = name; } public B getB() { return b; } public void setB(B b) { this.b = b; } //提供克隆方法 public A cloneMyself(){ A a = null; try { /** * 将对象写入到内存数组中 */ ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(this); /** * 读取内存数组中的数据转换成对象 */ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); a = (A) ois.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return a; } } class B implements Serializable{ /** * */ private static final long serialVersionUID = -1984117425001746882L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
JAVA 克隆小实例
猜你喜欢
转载自blog.csdn.net/xy87940020/article/details/79000726
今日推荐
周排行