나는 그것을 직접 구현했습니다 :
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 A는 Cloneable을 구현합니다.
공개 문자열 str[];
에이() {
str = 새로운 문자열[2];
}
공개 객체 복제() {
Ao = 널;
노력하다 {
o = (A) super.clone();
} catch(CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = 새로운 문자열[2];
반환 오;
}
}
void run()이 예외를 발생시킵니다. {
A a1 = 새로운 A(), a2 = 새로운 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]);
}
결과:
교류
1.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 A는 Cloneable을 구현합니다.
공개 문자열 이름;
공개 객체 복제() {
Ao = 널;
노력하다 {
o = (A) super.clone();
} catch(CloneNotSupportedException e) {
e.printStackTrace();
}
반환 오;
}
}
2.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 A는 Cloneable을 구현합니다.
공개 문자열 이름[];
공개 A(){
이름=새 문자열[2];
}
공개 객체 복제() {
Ao = 널;
노력하다 {
o = (A) super.clone();
} catch(CloneNotSupportedException e) {
e.printStackTrace();
}
반환 오;
}
}
3.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 A는 Cloneable을 구현합니다.
공개 문자열 이름[];
공개 벡터<B>claB;
공개 A(){
이름=새 문자열[2];
claB=새로운 벡터<B>();
}
공개 객체 복제() {
Ao = 널;
노력하다 {
o = (A) super.clone();
} catch(CloneNotSupportedException e) {
e.printStackTrace();
}
o.name=new String[2];//깊이 복제
o.claB=new Vector<B>();//복제를 끝까지 처리
for(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//물론 클래스 B도 해당 복제 메소드를 구현해야 합니다.
o.claB.add(임시);
}
반환 오;
}
}