2011-08-24 99 views
1

有沒有一種方法我可以創建一個Java類,有一對「一般」的getter/setter方法,如動態字段的Java類

public Object get(String name); 
public void set(String name, Object object); 

,使Groovy的翻譯語句,如

myObject.foo = 'bar' 

myObject.set("foo", "bar")? 

myObject是具有的Java類的實例種set(String, Object)方法)

+2

只是好奇,你爲什麼要這樣做?看起來你只是讓事情變得更加複雜,因爲這基本上是groovy bean屬性訪問器已經提供的。 –

+0

「爲什麼」部分有點棘手.. Java是我可以編寫類的語言,但我的客戶在他們的Groovy程序中使用這些類。我遇到了這種情況,我想公開一個Java類,它的屬性在編譯時不知道,並在運行時更改。一個粗糙的方法是讓我的對象實現Map並要求用戶執行obj ['foo'] = bar,但我認爲可能有更好的方法..不知道這些「bean屬性訪問器」..會嘗試它們如其中一個答案建議,並得到thx .. – Pradyumna

回答

3

有你的java類擴展groovy.lang.GroovyObjectSupport,它提供的getProperty實現和setProperty,或實現到接口groovy.lang.GroovyObject

+0

它的工作..我擴展groovy.lang.GroovyObjectSupport ..謝謝.. – Pradyumna

0

你必須寫在Groovy兩種方法(假設你從你的Java類派生的Groovy類):

def getProperty(String name) { "This is the property '$name'" } 
void setProperty(String name, value) { println "You tried to set property '$name' to '$value'" }