Цитирование из Использование метода Missing и propertyMissing :
Groovy также поддерживает propertyMissing для работы с попытками разрешения свойства. Для получения вы используете определение propertyMissing, которое принимает аргумент String:
class Foo {
def propertyMissing(String name) { name }
}
def f = new Foo()
assertEquals "boo", f.boo
Для сеттеров вы добавляете второе определение propertyMissing, которое принимает аргумент значения:
class Foo {
def storage = [:]
def propertyMissing(String name, value) { storage[name] = value }
def propertyMissing(String name) { storage[name] }
}
def f = new Foo()
f.foo = "bar"
assertEquals "bar", f.foo
Как и в methodMissing, вы, вероятно, захотите динамически зарегистрировать новые свойства во время выполнения, чтобы повысить производительность вашего кода.