【发布时间】:2019-09-25 13:52:09
【问题描述】:
我尝试了一些使用 Groovy 的(运行时)元编程。我继续实现了 GroovyInterceptable 的 getProperty 方法。但是现在我发现这仅在从外部获取对象的属性时才有效。从该类的方法中获取属性时,不会调用我的 getProperty 方法(请参见下面的代码示例)。
现在,这是预期的吗?一直都是这样吗?一位同事告诉我,这在过去(与他所记得的)不同。是否有另一种方法可以让从内部和外部读取的属性都调用我的 getProperty 方法?
class SomeGroovyClass implements GroovyInterceptable {
def foo
SomeGroovyClass() {
foo = "ctor"
}
def getProperty(String name) {
if (name == "foo") {
return "blub"
} else {
return "foo"
}
}
def test2() {
System.out.println "foo from inside via method call: " + this.foo
}
}
def someGroovyClass = new SomeGroovyClass()
System.out.println "foo from outside: " + someGroovyClass.foo
someGroovyClass.test2()
输出是
foo from outside: blub
foo from inside via method call: ctor
【问题讨论】: