2011-08-24 79 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'" }