java中的克隆方法的使用(三类 浅、深、完美克隆 )
来源:互联网 发布:新网互联域名证书下载 编辑:程序博客网 时间:2024/06/09 23:46
- package clone;
- class UnCloneA {
- private int i;
- public UnCloneA(int ii) {
- i = ii;
- }
- public void doublevalue() {
- i *= 2;
- }
- public String toString() {
- return Integer.toString(i);
- }
- }
- class CloneB implements Cloneable{
- public int aInt;
- public UnCloneAA unCA = new UnCloneAA(111);
- public Object clone(){
- CloneB o = null;
- try{
- o = (CloneB)super.clone();
- }catch(CloneNotSupportedException e){
- e.printStackTrace();
- }
- return o;
- }
- }
- public class CloneMain影子克隆 {
- public static void main(String[] a){
- CloneB b1 = new CloneB();
- b1.aInt = 11;
- System.out.println("before clone,b1.aInt = "+ b1.aInt);
- System.out.println("before clone,b1.unCA = "+ b1.unCA);
- CloneB b2 = (CloneB)b1.clone();
- b2.aInt = 22;
- b2.unCA.doublevalue();
- System.out.println("=================================");
- System.out.println("after clone,b1.aInt = "+ b1.aInt);
- System.out.println("after clone,b1.unCA = "+ b1.unCA);
- System.out.println("=================================");
- System.out.println("after clone,b2.aInt = "+ b2.aInt);
- System.out.println("after clone,b2.unCA = "+ b2.unCA);
- }
- }
- package clone;
- class UnCloneAA implements Cloneable{
- private int i;
- public UnCloneAA(int ii) {
- i = ii;
- }
- public void doublevalue() {
- i *= 2;
- }
- public String toString() {
- return Integer.toString(i);
- }
- public Object clone(){
- UnCloneAA o = null;
- try{
- o = (UnCloneAA)super.clone();
- }catch(CloneNotSupportedException e){
- e.printStackTrace();
- }
- return o;
- }
- }