Ran*_*ize 1 reflection groovy pojo
鉴于这两个POJO类:
class UserA {
String name
String surname
Integer age
}
class UserB {
String name
String surname
String email
}
Run Code Online (Sandbox Code Playgroud)
和相关实例:
usera = new UserA(name:'john', surname:'smith', age:20)
userb = new UserB(name:'mark', surname:'almond', email:'blah@gmail.com')
Run Code Online (Sandbox Code Playgroud)
如何合并"usera"和"userb"(usera < - userb)以获得"usera",如下所示:
assert usera.name == 'mark'
assert usera.surname == 'almond'
assert usera.age == 20
assert usera.email == 'blah@gmail.com'
Run Code Online (Sandbox Code Playgroud)
?
通常,我想从其他实例添加缺少的属性和值,并覆盖对象中已存在的属性值.
使用metaClass将属性从B添加到A:
class UserA {
String name
String surname
Integer age
}
class UserB {
String name
String surname
String email
}
usera = new UserA(name:'john', surname:'smith', age:20)
userb = new UserB(name:'mark', surname:'almond', email:'blah@gmail.com')
userb.properties.each {
usera.metaClass[it.key] = it.value
}
assert usera.name == 'mark'
assert usera.surname == 'almond'
assert usera.age == 20
assert usera.email == 'blah@gmail.com'
Run Code Online (Sandbox Code Playgroud)