ฉันนำไปปฏิบัติด้วยตัวเอง:
คัดลอกรหัสรหัส ดังต่อไปนี้:
คลาสสาธารณะ A ใช้งาน Cloneable {
สตริงสาธารณะ str[];
ก() {
str = สตริงใหม่ [2];
-
โคลนวัตถุสาธารณะ () {
o = โมฆะ;
พยายาม {
o = (A) super.clone();
} จับ (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.โคลน();
a2.str[0] = "ค";
System.out.println(a1.str[0] + " " + a2.str[0]);
-
ผลลัพธ์:
เครื่องปรับอากาศ
1.
คัดลอกรหัสรหัส ดังต่อไปนี้:
คลาสสาธารณะ A ใช้งาน Cloneable {
ชื่อสตริงสาธารณะ
โคลนวัตถุสาธารณะ () {
o = โมฆะ;
พยายาม {
o = (A) super.clone();
} จับ (CloneNotSupportedException e) {
e.printStackTrace();
-
กลับหรือ;
-
-
2.
คัดลอกรหัสรหัส ดังต่อไปนี้:
คลาสสาธารณะ A ใช้งาน Cloneable {
ชื่อสตริงสาธารณะ [];
สาธารณะ A(){
ชื่อ=สตริงใหม่[2];
-
โคลนวัตถุสาธารณะ () {
o = โมฆะ;
พยายาม {
o = (A) super.clone();
} จับ (CloneNotSupportedException e) {
e.printStackTrace();
-
กลับหรือ;
-
-
3.
คัดลอกรหัสรหัส ดังต่อไปนี้:
คลาสสาธารณะ A ใช้งาน Cloneable {
ชื่อสตริงสาธารณะ [];
เวกเตอร์สาธารณะ<B>claB;
สาธารณะ A(){
ชื่อ=สตริงใหม่[2];
claB=เวกเตอร์ใหม่<B>();
-
โคลนวัตถุสาธารณะ () {
o = โมฆะ;
พยายาม {
o = (A) super.clone();
} จับ (CloneNotSupportedException e) {
e.printStackTrace();
-
o.name=new String[2];//deep clone
o.claB=new Vector<B>();//ประมวลผลโคลนจนจบ
สำหรับ(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//แน่นอนว่าคลาส B ต้องใช้วิธีการโคลนที่สอดคล้องกันด้วย
o.claB.add(อุณหภูมิ);
-
กลับหรือ;
-
-