Gradle 我可以重写/委派分配运算符吗?
我开始学习Groovy,并面临挑战 我有一段代码,它将元数据存储到对象:Gradle 我可以重写/委派分配运算符吗?,gradle,groovy,Gradle,Groovy,我开始学习Groovy,并面临挑战 我有一段代码,它将元数据存储到对象: class Meta { final MetaItem name final MetaItem description // ... // And more fields with type MetaItem // ... Meta() { name = new MetaItem("name") description = new MetaI
class Meta {
final MetaItem name
final MetaItem description
// ...
// And more fields with type MetaItem
// ...
Meta() {
name = new MetaItem("name")
description = new MetaItem("description")
}
void setName(String name) {
this.name.value = name
}
String getName() {
return this.name.value
}
void setDescription(String description) {
this.description.value = description
}
String getDescription() {
return this.description.value
}
// ...
// And more methods. Two for each field
// ...
}
class MetaItem {
private final def id
def value
MetaItem(String id) {
this.id = id
}
}
// Validating
def meta = new Meta()
assert meta.name == null
assert meta.description == null
meta.with {
name = "Name"
description = "Desc"
}
assert meta.name == "Name"
assert meta.description == "Desc"
print "Success!"
正如您从代码中看到的,当添加新字段时,其数量会快速增加,因为对于每个字段,您需要添加两个方法。这能被优化吗?将赋值操作从对象重定向到其成员。我已经看过代表了,但这不是我需要的
另外,我不能通过.value
使用access,因为该类用于Gradle扩展,我需要如下配置:
myExtension {
meta {
name = "Name"
description = "Desc"
// And many others
}
}
p.p.S.对不起,我的英语不好,它不是我的第一语言你不能使用
@Delegate
?在我的情况下它如何正确使用?我试着去理解,但无法理解