当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java克隆对象[Java编程]

赞助商链接



  本文“java克隆对象[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
若需改正一个对象,同时不想改变调用者的对象,就要制作该对象的一个本地副本.这也是本地副本最常见的一种用处.若决意制作一个本地副本,只需简单地利用clone()办法便可.Clone是“克隆”的意思,即制作完好一模一样的副本.这个办法在底子类Object中定义成“protected”(受保护)情势.但在但愿克隆的任何衍生类中,必须将其覆盖为“public”情势.比方,尺度库类Vector覆盖了clone(),所以能为Vector调用clone(),以下所示:
//: Cloning.java
// The clone() operation works for only a few
// items in the standard Java library.
import java.util.*;

class Int {
  private int i;
  public Int(int ii) { i = ii; }
  public void increment() { i++; }
  public String toString() { 
    return Integer.toString(i); 
  }
}

public class Cloning {
  public static void main(String[] args) {
    Vector v = new Vector();
    for(int i = 0; i < 10; i++ )
      v.addElement(new Int(i));
    System.out.println("v: " + v);
    Vector v2 = (Vector)v.clone();
    // Increment all v2's elements:
    for(Enumeration e = v2.elements();
        e.hasMoreElements(); )
      ((Int)e.nextElement()).increment();
    // See if it changed v's elements:
    System.out.println("v: " + v);
  }
} ///:~
clone()办法产生了一个Object,后者必须当即重新造型为精确范例.这个例子指出Vector的clone()办法不能自动尝试克隆Vector内包含的每个对象——由于别名问题,老的Vector和克隆的Vector都包含了相同的对象.我们普通把这种情形叫作“简单复制”大概“浅层复制”,因为它只复制了一个对象的“表面”部份.实际对象除包含这个“表面”以外,还包含句柄指向的全部对象,以及那些对象又指向的其他全部对象,由此类推.这就是“对象网”或“对象关系网”的由来.若能复制下全部这张网,便叫作“全面复制”大概“深层复制”.
在输出中可看到浅层复制的后果,注意对v2采纳的行动也会影响到v:
v: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
v: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
普通来说,由于不敢保证Vector里包含的对象是“可以克隆”(注释②)的,所以最好不要试图克隆那些对象.

②:“可以克隆”用英语讲是cloneable,请留神Java库中专门保存了这样的一个关键字.
  以上是“java克隆对象[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .