Copy the instance code for the Java Clone of class

  • 2020-04-01 01:37:26
  • OfStack

I realized it by myself:


public class A implements Cloneable {
public String str[];
A() {
str = new String[2];
}
public Object clone() {
A o = null;
try {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = new String[2];
return o;
}
}
void run() throws Exception {
A a1 = new A(), a2 = new A();
a1.str[0] = "a"; a1.str[1] = "b"; 
a2 = (A) a1.clone();
a2.str[0] = "c"; a2.str[1] = "d";
System.out.println(a1.str[0] + " " + a2.str[0]);
}

Results:

A c

1.


public class A implements Cloneable { 
 public String name; 
 public Object clone() { 
  A o = null; 
  try { 
   o = (A) super.clone(); 
  } catch (CloneNotSupportedException e) { 
   e.printStackTrace(); 
  } 
  return o; 
 } 
} 

2.


public class A implements Cloneable { 
 public String name[]; 

 public A(){ 
  name=new String[2]; 
 } 
 public Object clone() { 
  A o = null; 
  try { 
   o = (A) super.clone(); 
  } catch (CloneNotSupportedException e) { 
   e.printStackTrace(); 
  } 
  return o; 
 } 
} 

3.


public class A implements Cloneable {    
     public String name[];    
     public Vector<B> claB;    

     public A(){    
         name=new String[2];    
         claB=new Vector<B>();    
     }    

     public Object clone() {    
         A o = null;    
         try {    
             o = (A) super.clone();    
         } catch (CloneNotSupportedException e) {    
             e.printStackTrace();    
         }    
         o.name=new String[2];//Depth clone     
         o.claB=new Vector<B>();//Carry clone to the end & NBSP;    
         for(int i=0;i<claB.size();i++){    
             B temp=(B)claB.get(i).clone();//Of course Class B also implements the clone method
             o.claB.add(temp);    
         }    
         return o;    
     }    
 } 


Related articles: