لقد نفذت ذلك بنفسي:
انسخ رمز الكود كما يلي:
الطبقة العامة A تنفذ Cloneable {
سلسلة عامة str[];
أ() {
str = سلسلة جديدة [2]؛
}
استنساخ الكائن العام () {
أ س = فارغة؛
يحاول {
o = (أ) super.clone();
} قبض على (CloneNotSupportedException e) {
printStackTrace();
}
o.str = سلسلة جديدة[2];
العودة س؛
}
}
تشغيل باطلة () يلقي استثناء {
أ a1 = جديد أ ()، a2 = جديد أ ()؛
a1.str[0] = "أ"; a1.str[1] = "ب";
a2 = (أ) a1.clone();
a2.str[0] = "c";
System.out.println(a1.str[0] + " " + a2.str[0]);
}
نتيجة:
تيار متردد
1.
انسخ رمز الكود كما يلي:
الطبقة العامة A تنفذ Cloneable {
اسم السلسلة العامة؛
استنساخ الكائن العام () {
أ س = فارغة؛
يحاول {
o = (أ) super.clone();
} قبض على (CloneNotSupportedException e) {
printStackTrace();
}
العودة س؛
}
}
2.
انسخ رمز الكود كما يلي:
الطبقة العامة A تنفذ Cloneable {
اسم السلسلة العامة[]؛
العامة أ () {
name=new String[2];
}
استنساخ الكائن العام () {
أ س = فارغة؛
يحاول {
o = (أ) super.clone();
} قبض على (CloneNotSupportedException e) {
printStackTrace();
}
العودة س؛
}
}
3.
انسخ رمز الكود كما يلي:
الطبقة العامة A تنفذ Cloneable {
اسم السلسلة العامة[]؛
ناقل عام<B>claB;
العامة أ () {
name=new String[2];
claB=new Vector<B>();
}
استنساخ الكائن العام () {
أ س = فارغة؛
يحاول {
o = (أ) super.clone();
} قبض على (CloneNotSupportedException 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(temp);
}
العودة س؛
}
}