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); } }
相关文章推荐
- coco2d-x 游戏背景音乐的添加
- java.sql.SQLException: ORA-00911: 无效字符 解决方案
- 搜索引擎的搜索技巧——如何利用浏览器精准搜索(科普文)
- 浅析修改、删除数据后刷新JTable的方法
- 使用循环的方式打印字符串所有排列组合
- jsoup 简介
- 即时通信方法、系统、装置和即时通信终端
- 循环冗余校验CRC总结
- jQuery第二课 ——节点选择、元素创建与操作、包装对象、jq转原生js
- 【CSS】兼容IE7的各个各样的标题面板
- 浅谈Java虚拟机的工作模式Client和Server。
- Delphi RenameFile 文件改名
- hdoj 1845 Jimmy’s Assignment 【HK】
- 【Docker】Windows下docker的安装
- V7导包错误
- 【iOS程序启动与运转】- RunLoop个人小结
- cocos2d-x Loadingbar的使用
- UVALive 4262——Trip Planning——————【Tarjan 求强连通分量个数】
- 函数声明中的强制类型转换
- curl的超时时间设置