Gradle 我可以重写/委派分配运算符吗?

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

我开始学习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!"
正如您从代码中看到的,当添加新字段时,其数量会快速增加,因为对于每个字段,您需要添加两个方法。这能被优化吗?将赋值操作从对象重定向到其成员。我已经看过代表了,但这不是我需要的

另外,我不能通过
.value
使用access,因为该类用于Gradle扩展,我需要如下配置:

myExtension {
    meta {
        name = "Name"
        description = "Desc"
        // And many others
    }
}

p.p.S.对不起,我的英语不好,它不是我的第一语言

你不能使用
@Delegate
?在我的情况下它如何正确使用?我试着去理解,但无法理解