Groovy 覆盖构造函数命名参数
Groovy override constructor named parameters
给予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}"
alice 将被打印出来
我不确定,你真正想要的是什么。如果您真的只需要 ctor 的一些魔法,请告诉我们。但最常见的解决方法是:
计算lower
,需要时
String getLower() { name.toLowerCase() }
覆盖 name
的 setter
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'
给予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}"
alice 将被打印出来
我不确定,你真正想要的是什么。如果您真的只需要 ctor 的一些魔法,请告诉我们。但最常见的解决方法是:
计算
lower
,需要时String getLower() { name.toLowerCase() }
覆盖
的 settername
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'