日期:2011-03-22 16:17:00 来源:本站整理
用Vector举行深层复制[Java编程]
本文“用Vector举行深层复制[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
下面让我们复习一下本章早些时刻提出的Vector例子.这一次Int2类是可以克隆的,所以能对Vector举行深层复制:
Int3自Int2担当而来,并增添了一个新的基本范例成员int j.大家大概认为自己需求再次覆盖clone(),以确保j得到复制,但实情并非如此.将Int2的clone()当作Int3的clone()调用时,它会调用Object.clone(),判断出当前操作的是Int3,并复制Int3内的全部二进制位.只要没有新增需求克隆的句柄,对Object.clone()的一个调用就可以完成全部必要的复制——无论clone()是在层次构造多深的一级定义的.//: AddingClone.java // You must go through a few gyrations to // add cloning to your own class. import java.util.*; class Int2 implements Cloneable { private int i; public Int2(int ii) { i = ii; } public void increment() { i++; } public String toString() { return Integer.toString(i); } public Object clone() { Object o = null; try { o = super.clone(); } catch (CloneNotSupportedException e) { System.out.println("Int2 can't clone"); } return o; } } // Once it's cloneable, inheritance // doesn't remove cloneability: class Int3 extends Int2 { private int j; // Automatically duplicated public Int3(int i) { super(i); } } public class AddingClone { public static void main(String[] args) { Int2 x = new Int2(10); Int2 x2 = (Int2)x.clone(); x2.increment(); System.out.println( "x = " + x + ", x2 = " + x2); // Anything inherited is also cloneable: Int3 x3 = new Int3(7); x3 = (Int3)x3.clone(); Vector v = new Vector(); for(int i = 0; i < 10; i++ ) v.addElement(new Int2(i)); System.out.println("v: " + v); Vector v2 = (Vector)v.clone(); // Now clone each element: for(int i = 0; i < v.size(); i++) v2.setElementAt( ((Int2)v2.elementAt(i)).clone(), i); // Increment all v2's elements: for(Enumeration e = v2.elements(); e.hasMoreElements(); ) ((Int2)e.nextElement()).increment(); // See if it changed v's elements: System.out.println("v: " + v); System.out.println("v2: " + v2); } } ///:~
至此,大家可以总结出对Vector举行深层复制的先决条件:在克隆了Vector后,必须在此中遍历,并克隆由Vector指向的每个对象.为了对Hashtable(散列表)举行深层复制,也必须采纳近似的处理.
这个例子剩余的部份显示出克隆已实际举行——证据就是在克隆了对象今后,可以安闲改变它,而本来那个对象不受任何影响.
以上是“用Vector举行深层复制[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:通过序列化举行深层复制(java)
- ·下一篇文章:克隆合成对象
- ·中查找“用Vector举行深层复制”更多相关内容
- ·中查找“用Vector举行深层复制”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论