我可以在 Java 对象中实现 Groovy 的 getProperty
我有一个混合的 Java/Groovy 项目,我正在尝试向我的 Java 对象添加一些“糖”以使 Groovy 端更干净。
是否可以Object getProperty(String)
在 Java 类中实现并让 Groovy 在访问该实例的属性时看到它?
我有一个失败的测试用例如下:
// HasProperty.java
public class HasProperty {
public Object getProperty(String name) {
return "pie";
}
}
// TestHasProperty.groovy
class HasPropertyTest {
@org.junit.Test
public void testCanGetProperty() {
def h = new HasProperty()
assert h.name == "pie"
}
}
测试没有大张旗鼓地失败:
groovy.lang.MissingPropertyException: No such property: name for class: HasProperty
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:63)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
at [...]
这是 Groovy 1.8.6 和 Java 6。