GroovyのgetPropertyをJavaオブジェクトに実装できますか
JavaとGroovyの混合プロジェクトがあり、Groovy側をよりクリーンにするために、Javaオブジェクトに「砂糖」を追加しようとしています。
Javaクラスに実装Object getProperty(String)
して、そのインスタンスのプロパティにアクセスするときに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 [...]
これはGroovy1.8.6とJava6です。