В приведенном ниже примере я хочу переопределить все свойства с помощью логина моего собственного делегата c. Но я могу сделать это только для несуществующих свойств, те, которые известны во время компиляции, остаются прежними.
Можно ли обработать их все?
def dsl(Closure action) {
action.delegate = new Object() {
Object getProperty(String name) {
println "overriding property [$name] => Ross"
return "Ross"
}
}
action()
}
dsl {
def existingSymbol = "Joe"
println "existingSymbol: $existingSymbol"
println "inexistentSymbol: $inexistentSymbol"
}
Вывод:
existingSymbol: Joe <--- expecting "Ross" here
overriding property [inexistentSymbol] => Ross
inexistentSymbol: Ross