Sunday, March 18, 2018

Groovy - Clone - Shallow Copy


import groovy.transform.AutoClone 
// Do not clone the teacher property.
@AutoClone(excludes ['teacher'])
class Course {
    String name
    Date date
    Teacher teacher
}
 
@AutoClone()
class Teacher {
    String name
}
 
def mrhaki =
    new Teacher(name'mrhaki')
     
def course =
    new Course(
        name'Groovy 101',
        datenew Date(10,
        teachermrhaki)
 
// We make a deep copy.
def secondCourse course.clone()
assert secondCourse != course
assert !secondCourse.is(course)
// Only the teacher property is
// a shallow copy.
assert secondCourse.teacher == mrhaki
assert secondCourse.teacher.is(mrhaki)
 
// Change property on teacher property on cloned instance.
secondCourse.teacher.name 'hubert1'
 
assert secondCourse.teacher.name == 'hubert1'
assert course.teacher.name == 'hubert1'

println "secondCourse.teacher >>> " +secondCourse.teacher.name
println  "course.teacher >>> " +course.teacher.name
 

No comments:

Post a Comment

உப்பு மாங்காய்

சுருக்குப்பை கிழவி. சுருக்கங்கள் சூழ் கிழவி. பார்க்கும் போதெல்லாம் கூடையுடனே குடியிருப்பாள். கூடை நிறைய குட்டி குட்டி மாங்காய்கள். வெட்டிக்க...