@@ -32,10 +32,20 @@ public void setName(String name) {
32
32
this .name = name ;
33
33
}
34
34
35
- @ Override
36
- protected Object clone () throws CloneNotSupportedException {
37
- return super .clone ();
38
- }
35
+ /**
36
+ * 深拷贝
37
+ * @return
38
+ */
39
+ /*@Override
40
+ public Object clone() {
41
+ Object o = null;
42
+ try {
43
+ o = super.clone();
44
+ } catch (CloneNotSupportedException e) {
45
+ e.printStackTrace();
46
+ }
47
+ return o;
48
+ }*/
39
49
}
40
50
class Student implements Cloneable {
41
51
private String name ;
@@ -57,10 +67,30 @@ public void setFamily(Family family) {
57
67
this .family = family ;
58
68
}
59
69
70
+ /**
71
+ * 浅拷贝 对其对象的引用却没有拷贝
72
+ * @return
73
+ * @throws CloneNotSupportedException
74
+ */
60
75
@ Override
61
76
protected Object clone () throws CloneNotSupportedException {
62
77
return super .clone ();
63
78
}
79
+
80
+ /**
81
+ * 深拷贝
82
+ */
83
+ /*@Override
84
+ protected Object clone() {
85
+ Student o = null;
86
+ try {
87
+ o = (Student)super.clone();
88
+ } catch (CloneNotSupportedException e) {
89
+ e.printStackTrace();
90
+ }
91
+ o.family = (Family) family.clone();
92
+ return o;
93
+ }*/
64
94
}
65
95
66
96
public class CopyT {
@@ -71,19 +101,10 @@ public static void main(String[] args) throws CloneNotSupportedException {
71
101
student1 .setFamily (family );
72
102
student1 .setName ("Jeff" );
73
103
74
- // 浅拷贝
75
- // 对其对象的引用却没有拷贝
76
104
Student student2 = (Student ) student1 .clone ();
77
105
student2 .setName ("Jeff2" );
78
106
student2 .getFamily ().setName ("Jeff2 Family" );
79
107
System .out .println (student1 .getName () + " " + student1 .getFamily ().getName ());
80
108
System .out .println (student2 .getName () + " " + student2 .getFamily ().getName ());
81
-
82
- // 深拷贝
83
- // Student student2 = (Student) student1.clone();
84
- // student2.setName("Jeff2");
85
- // student2.getFamily().setName("Jeff2 Family");
86
- // System.out.println(student1.getName() + " " + student1.getFamily().getName());
87
- // System.out.println(student2.getName() + " " + student2.getFamily().getName());
88
109
}
89
110
}
0 commit comments