Giving class
class A {
def String name = ''
def String lower = ''
}
可以使用带有命名参数的构造函数
new A(name: 'Alice', lower: 'alice')
我不想指定较低的参数,因为它总是等于 name.toLowerCase()
如何实现这个构造函数?所以在打电话后:
def a = new A(name: 'Alice')
println "${a.lower}"
爱丽丝将被打印
我不确定,你在这里真正追求的是什么。 如果您真的只需要CTOR的魔法,请告诉我们。 但解决此问题的最常见方法是:
-
在需要时计算
lower
String getLower() { name.toLowerCase() }
-
覆盖
name
的二传手class A { String name = '' private String lower = '' void setName(String name) { this.name = name this.lower = name?.toLowerCase() } String getLower() { lower } } def a = new A(name: 'Charlie') assert a.lower == 'charlie'