您的位置:首页 > 其它

clone

2015-10-17 10:37 211 查看
总结:基本数据类型浅度克隆,引用数据类型深度克隆

//这段代码会出现捆绑,若把其中的注释去掉则不会捆绑

class User implements Cloneable {
String name;
int age;

public User(String name, int age) {
super();
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}

//@Override
//public User clone() throws CloneNotSupportedException {
//return (User) super.clone();
//}
}

class Account implements Cloneable {
User user;
long balance;

public Account(User user, long balance) {
this.user = user;
this.balance = balance;
}

@Override
public String toString() {
return "Account [user=" + user + ", balance=" + balance + "]";
}

@Override
public Account clone() throws CloneNotSupportedException {
Account account = null;
account = (Account) super.clone();
//if (user != null) {
//account.user = user.clone();
//}
return account;
}
}

public class CloneDemo {
public static void main(String[] args) {
User u = new User("Jack", 20);
Account account = new Account(u, 1234567);
System.out.println(account);
Account account2 = null;
try {
account2 = account.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
System.out.println(account2);
//观察是否捆绑
account2.user.age = 40;
System.out.println(account);
System.out.println(account2);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: