我们目前在@Immutable类中使用基于映射的构造函数,并在实例化期间传递所有字段值。如果用户在实例化期间没有为它们提供任何值,我想为字段设置合理的默认值?
有一种常规方式(一种简单的方法)吗?
答案 0 :(得分:1)
您可以在类声明中填写属性:
@groovy.transform.Immutable
class Person {
String name = 'john'
}
p = new Person(name: 'percy')
assert p.name == 'percy'
p2 = new Person()
assert p2.name == 'john'
更新:如果在创建对象后使用了任何setter,则Groovy会失败。
try {
p2.name = 'echo'
assert p2.name == 'echo'
assert false
} catch(e) {
assert true
}
更新2:啊,groovyConsole
救援。 @Immutable
正在构造函数中设置name
字段,因此,该字段实际上是最终字段。