使用getproperty,setproperty和hasproperty代替$

时间:2015-08-27 18:14:15

标签: grails groovy

我有类似的东西。

def temp = "field"
object."$temp" = "hi"

这很好用。 但我可以使用setproperty,getproperty和hasproperty以某种方式实现相同的功能。

由于

1 个答案:

答案 0 :(得分:0)

您可以将object."$temp" = "hi"替换为object.setProperty(temp, "hi"),将object."$temp"替换为object.getProperty(temp)。还有方括号语法:

e = new Expando()

def field = 'name'

e[field] = 'john doe' // set
assert e[field] == 'john doe' // get

e.setProperty(field, 'foo') // set
assert e.getProperty(field) == 'foo' // get

if (!e.hasProperty('bar')) { // has property
    e['bar'] = 'my bar'
}

assert e.getProperty('bar') == 'my bar'