当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机二级考试指导:Java里面的对象克隆
发布时间:2010/3/24 16:24:26 来源:城市学习网 编辑:admin

  Java里面的对象克隆
  java里面的对象克隆:实际存在的对象拷贝几份!
  即将一个实际的对象进行多份拷贝
  Code highlighting produced by Actipro CodeHighlighter (freeware)
  http://www.CodeHighlighter.com/
  package xsocket.server;
  public class Test implements Cloneable {
  private String name;
  public void setName(String arg) {
  this.name = arg;
  }
  public String getName() {
  return this.name;
  }
  public Object clone() throws CloneNotSupportedException {
  return super.clone();
  }
  public static void main(String args) throws CloneNotSupportedException {
  Test shepp = new Test();
  shepp.setName("first");
  System.out.println(shepp.getName());
  Test sheppclone = (Test)shepp.clone(); //对象拷出来一份副本
  System.out.println(sheppclone.getName());
  System.out.println("shepp sheppclose" + (shepp sheppclone));
  }
  }
  要知道 表示的是同一份对象。这里面的内存位置是不一样的哦。所以就不一样了!
  Code highlighting produced by Actipro CodeHighlighter (freeware)
  http://www.CodeHighlighter.com/
  package xsocket.server;
  public class Test implements Cloneable {
  private String name;
  public void setName(String arg) {
  this.name = arg;
  }
  public String getName() {
  return this.name;
  }
  public Object clone() throws CloneNotSupportedException {
  return super.clone();
  }
  public static void main(String args) throws CloneNotSupportedException {
  Test shepp = new Test();
  shepp.setName("first");
  Test shepp2 = shepp; //只是将两个值指向了同一个对象了所以会相互影响到对方的值!
  System.out.println(shepp2.getName());
  Test shepp3 = (Test)shepp.clone();//再做一个实际的副本出来就不会相互影响的!
  shepp3.setName("another");
  System.out.println(shepp3.getName());
  System.out.println(shepp.getName());
  }
  }
  输出:
  first
  another
  first
  (这就是拷贝的好处了!)
  要考虑一下什么时候用浅clone什么时候用深clone
  :

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved