有时候创建对象是需要耗费很多资源,但是每个对象之间又有大量的重复。我们可以选择在创建好一个对象后,以之作为模板克隆出其他对象,稍作修改,即可用于其他地方。

需要实现Cloneable接口,重写clone()方法。其实就是调用的Object类的clone()方法。

克隆对象只是复制了原对象的数据,每个对象还是独立的,他们的内存地址不同。

/**
* Created by wangbin10 on 2018/5/18.
*/
public class Prototype2 implements Cloneable,Serializable {
private static final long serialVersionUID = 2L;
private String name;
private Integer payAmount;
private String msg; public Prototype2() {
} public Prototype2(String name, Integer payAmount, String msg) {
this.name = name;
this.payAmount = payAmount;
this.msg = msg;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getPayAmount() {
return payAmount;
} public void setPayAmount(Integer payAmount) {
this.payAmount = payAmount;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Prototype2 clone() throws CloneNotSupportedException {
Prototype2 clone = (Prototype2) super.clone();
return clone;
}
}
/**
* Created by wangbin10 on 2018/5/18.
*/
public class PTest {
public static void main(String[] args) throws CloneNotSupportedException {
Prototype2 p1=new Prototype2("zhangsan",23,"hello!welcome to beijing!");
System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());
Prototype2 p2 = p1.clone();
p2.setName("lisi");
p2.setPayAmount(24);
System.out.println(p2.getName()+p2.getPayAmount()+p2.getMsg());
System.out.println("============================");
System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg()); }
}

最新文章

  1. Sql Server之数据类型详解
  2. Java 中 手动抛出异常: throw new Exception("错误信息") 错误信息的获得
  3. 【原创】C#玩高频数字彩快3的一点体会
  4. [Mac]关闭所有打开finder
  5. 高频交易[z]
  6. placement new 操作符
  7. Ehcache详细解读(转载)
  8. openwrt+ndp+ndppd+radvd+dhcpv6,ipv6穿透配置指南
  9. [BZOJ]4810: [Ynoi2017]由乃的玉米田
  10. tkinter中text文本与scroll滚动条控件(五)
  11. 8个超实用的jQuery插件应用
  12. excel 获取当前日期
  13. Linux学习笔记之passwd:Authentication token manipulation error_错误的解决办法
  14. Windows下sklearn源码安装
  15. GO学习笔记 - map
  16. [SoapUI] 比较两个不同环境下XML格式的Response, 结果不同时设置Test Step的执行状态为失败
  17. monkey测试===Android测试工具Monkey用法简介(转载)
  18. zabbix_get :command not found 解决办法
  19. aoj0121
  20. Notification高级技巧

热门文章

  1. Nginx得知——流程模型(worker流程)
  2. 图片及js的预加载
  3. NVIDIA 显卡与 CUDA 在深度学习中的应用
  4. Android设备与外接U盘实现数据读取操作
  5. Android程序猿必掌握的sqlite数据库连表查询
  6. gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
  7. Emgu-WPF 激光雷达研究-绘制雷达图
  8. JS enter代替tab,只有部分键可以代替
  9. js 评分
  10. 关于C#的可变长参数