欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java深拷贝示例,java示例,package com.

来源: javaer 分享于  点击 31879 次 点评:97

java深拷贝示例,java示例,package com.


package com.javacodegeeks.snippets.core;public class DeepCopy {    public static void main(String[] args) {        //Original Object        Person p = new Person("Person-A", "Civic");        System.out.println("Original (orginal values): " + p.getName() + " - "                + p.getCar().getName());        //Clone as a shallow copy        Person q = (Person) p.clone();        System.out.println("Clone (before change): " + q.getName() + " - "                + q.getCar().getName());        //change the primitive member        q.setName("Person-B");        //change the lower-level object        q.getCar().setName("Accord");        System.out.println("Clone (after change): " + q.getName() + " - "                + q.getCar().getName());        System.out.println("Original (after clone is modified): " + p.getName()                + " - " + p.getCar().getName());    }}class Person implements Cloneable {    //Lower-level object    private Car car;    private String name;    public Car getCar() {        return car;    }    public String getName() {        return name;    }    public void setName(String s) {        name = s;    }    public Person(String s, String t) {        name = s;        car = new Car(t);    }    @Override    public Object clone() {        //Deep copy        Person p = new Person(name, car.getName());        return p;    }}class Car {    private String name;    public String getName() {        return name;    }    public void setName(String s) {        name = s;    }    public Car(String s) {        name = s;    }}

输出:

Original (orginal values): Person-A - CivicClone (before change): Person-A - CivicClone (after change): Person-B - AccordOriginal (after clone is modified): Person-A - Civic
相关栏目:

用户点评