博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java clone
阅读量:6903 次
发布时间:2019-06-27

本文共 2900 字,大约阅读时间需要 9 分钟。

hot3.png

浅克隆:自定义的类型不能够克隆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(); } }

转载于:https://my.oschina.net/u/1458246/blog/272568

你可能感兴趣的文章
访问jsp时出现DefaultAnnotationProcessor
查看>>
我的友情链接
查看>>
“驱动程序在 \Device\Harddisk0\D 上检测到控制器错误”的根本解决办法!
查看>>
PYTHON上海分享活动小记---SQUID日志分析项目开发
查看>>
jQuery的技巧02
查看>>
java web项目中redis集群或单击版配置详解
查看>>
java 中同时输入多个参数,且要接受多个参数(今天java课上机时摸索到的)
查看>>
深入分析 Java I/O 的工作机制(二)
查看>>
virtualbox设置共享目录
查看>>
C++引用和指针
查看>>
杨辉三角形算法
查看>>
20个实用的PHP库(图表、图片、数据等)
查看>>
Ceph 笔记(一)
查看>>
简明Vim练级攻略
查看>>
ubuntu 之修改权限的问题
查看>>
表索引的一些要点
查看>>
php 框架ci去index.php的方法
查看>>
Hyper-v学习(四),SMB虚拟机实时迁移
查看>>
基于spring3注解的google分页
查看>>
怎样利用Cocoapods模块化开发你的app
查看>>