我开始学习Groovy并面对挑战。
我有这个代码,它将元数据存储到对象:
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!"
从代码中可以看出,当添加新字段时,它会在卷中增加,因为对于每个字段,您需要添加两个方法。这可以以某种方式进行优化吗?将赋值操作从对象重定向到其成员。我看过代表,但这不是我需要的。
P.S。我无法使用.value
访问权限,因为此类用于Gradle扩展,我需要像这样配置:
myExtension {
meta {
name = "Name"
description = "Desc"
// And many others
}
}
P.P.S。抱歉我的英文不好,这不是我的第一语言