文档章节

java clone

WolvesLeader
 WolvesLeader
发布于 2014/06/04 23:08
字数 372
阅读 111
收藏 4
点赞 0
评论 0
浅克隆:自定义的类型不能够克隆

package com.quincy.clone;
/**
 * 思念是种痛,
 * 倚楼听风雨,
 * 淡看江湖路,
 * 但见泪痕湿,
 * 不知心恨谁
 * @author Quincy
 *
 */
public class MyClone {
 public static void main(String[] args) {
  User user = new User();
  user.setName("quincy");
  user.setAge(25);
  
  User cloneUser= null;
  try {
   cloneUser = (User)user.clone();
   
   System.out.println(cloneUser.getName());
   System.out.println(cloneUser.getAge());
   System.out.println("================");
   cloneUser.setName("miao");
   cloneUser.setAge(24);
   
   System.out.println(cloneUser.getName());
   System.out.println(cloneUser.getAge());
   System.out.println(cloneUser == user);
   
   //不相同的原因是对User类的equals方法没有重写
   System.out.println(cloneUser.equals(user));
   
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
 }
}
class User implements Cloneable{
 private String name;
 private int age;
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 @Override
 //一定要设置为public 
 public Object clone() throws CloneNotSupportedException {
  //一定要调用super.clone()
  return super.clone();
 }
} 

深克隆:自定义的类型也可以克隆
package com.quincy.clone;
/**
 * 深度克隆
 * @author Quincy
 *
 */
public class DepClone {
 
    public static void main(String[] args) {
       People p = new People();
       p.setAge(30);
       p.setName("people");
       
       User2 user2 = new User2();
       user2.setAge(12);
       user2.setName("user2");
       user2.setPeople(p);
       
       
       try {
    User2 u2 = (User2)user2.clone();
    System.out.println(u2.getAge());
    System.out.println(u2.getName());
    
    p.setName("clone ");
    System.out.println(u2.getPeople() == p);
    System.out.println(u2.getPeople().getName());
    System.out.println(u2.getPeople().getAge());
   } catch (CloneNotSupportedException e) {
    
    e.printStackTrace();
   }
 }
}
class User2 implements Cloneable{
 private int age;
 private String name;
 private People people;
 
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public People getPeople() {
  return people;
 }
 public void setPeople(People people) {
  this.people = people;
 }
    //重写clone()方法
 @Override
 public Object clone() throws CloneNotSupportedException {
  User2 user2 = (User2)super.clone();
  user2.setPeople((People)user2.getPeople().clone());
  return user2;
 }
}
class People implements Cloneable{
 private int age ;
 private String name;
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 
 @Override
 public Object clone() throws CloneNotSupportedException {
  // TODO Auto-generated method stub
  return super.clone();
 }
 
}

© 著作权归作者所有

共有 人打赏支持
WolvesLeader
粉丝 0
博文 8
码字总数 5763
作品 0
宝鸡
程序员
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

聒小小噪 ⋅ 05/12 ⋅ 0

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)【转】 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variabl......

thinkyoung ⋅ 2014/10/14 ⋅ 0

深入理解原型模式 ——通过复制生成实例

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide一 原型模式介绍 在面向对象系统中,使用原型模式来复制一个对象自...

Amsour丶 ⋅ 06/19 ⋅ 0

Groovy 2.5.0 发布,JVM 动态脚本语言

Apache Groovy 2.5.0 已发布。此版本包含大量修复和依赖更新,并包含以下新特性: [GROOVY-6744] - Have the elvis operator (?:) support the Optional type in Java 8 [GROOVY-7089] - Bas......

淡漠悠然 ⋅ 05/31 ⋅ 1

Apache Groovy 2.5.0-rc-2 发布,包含 16 处修复和改进

Apache Groovy 2.5.0-rc-2 已发布。此版本包含 16 处错误修复/改进: Bug [GROOVY-6523] - Improve Documentation for in DefaultGroovyMethods.intersect(..) [GROOVY-7202] - Unable to re......

局长 ⋅ 05/07 ⋅ 0

JVM学习总结(一)运行时数据区

《深入Java虚拟机》这本书买了有一段时间了,当时看的时候就只是看,并没有边看边总结啥的,最后发现到脑子里面的根本所剩无几了。现在开始要好好归纳总结地再学习一遍。 运行时数据区域 JV...

hensemlee ⋅ 04/22 ⋅ 0

【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank ⋅ 06/21 ⋅ 0

sharding-jdbc源码分析—准备工作

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/7831817c1da8 接下来对sharding-jdbc源码的分析基于tag为源码,根据sharding-jdbc Features深入学习sharding-jdbc的几个主要特性...

飞哥-Javaer ⋅ 05/03 ⋅ 0

培训云计算学校,虚拟机基本结构讲解

我们要对JVM虚拟机的结构有一个感性的认知。毕竟我们不是编程人员,认知程度达不到那么深入。一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机...

长沙千锋 ⋅ 05/17 ⋅ 0

java开发中的常用的设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代...

qq_38024548 ⋅ 05/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 22分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 23分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 23分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 27分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 37分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 40分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 42分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 43分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 55分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 56分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部