@@ -19,46 +19,46 @@ data class Person(var name: String, var address: Address) : Cloneable {
19
19
20
20
public override fun clone () = Person (name, this .address.clone())
21
21
22
+ constructor (person: Person ) : this (person.name, Address (person.address))
23
+
22
24
fun deepCopy (
23
25
name : String = this.name,
24
26
address : Address = this.address.deepCopy()
25
27
) = Person (name, address)
26
-
27
- constructor (person: Person ) : this (person.name, Address (person.address))
28
28
}
29
29
30
30
data class Company (var name : String , var industry : String , val ceo : Person , val employees : List <Person >) : Cloneable {
31
31
32
- fun deepCopy (
33
- name : String = this.name,
34
- industry : String = this.industry,
35
- ceo : Person = this.ceo.deepCopy(),
36
- employees : List <Person > = this.employees.map { it.deepCopy() },
37
- ) = Company (name, industry, ceo, employees)
38
-
39
32
public override fun clone () = Company (name, industry, ceo.clone(), employees.map { it.clone() })
40
33
41
34
constructor (company: Company ) : this (
42
35
company.name,
43
36
company.industry,
44
37
Person (company.ceo),
45
38
company.employees.map { Person (it) })
46
- }
47
-
48
- data class Organization (var name : String , val headquarters : Address , val companies : List <Company >) : Cloneable {
49
39
50
40
fun deepCopy (
51
41
name : String = this.name,
52
- headquarters : Address = this.headquarters.deepCopy(),
53
- companies : List <Company > = this.companies.map { it.deepCopy() },
54
- ) = Organization (name, headquarters, companies)
42
+ industry : String = this.industry,
43
+ ceo : Person = this.ceo.deepCopy(),
44
+ employees : List <Person > = this.employees.map { it.deepCopy() },
45
+ ) = Company (name, industry, ceo, employees)
46
+ }
47
+
48
+ data class Organization (var name : String , val headquarters : Address , val companies : List <Company >) : Cloneable {
55
49
56
50
public override fun clone () = Organization (name, headquarters.clone(), companies.map { it.clone() })
57
51
58
52
constructor (organization: Organization ) : this (
59
53
organization.name,
60
54
Address (organization.headquarters),
61
55
organization.companies.map { Company (it) })
56
+
57
+ fun deepCopy (
58
+ name : String = this.name,
59
+ headquarters : Address = this.headquarters.deepCopy(),
60
+ companies : List <Company > = this.companies.map { it.deepCopy() },
61
+ ) = Organization (name, headquarters, companies)
62
62
}
63
63
64
64
class CloningObjectUnitTest {
0 commit comments