【发布时间】:2020-02-15 22:01:34
【问题描述】:
在下面的示例中,我想用我自己的委托逻辑覆盖 所有 属性。但是我只能对不存在的属性执行此操作,编译时已知的属性保持不变。
是否可以全部处理?
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
【问题讨论】: