我在对象中的对象中有一个对象的路径,我想使用 Groovy 的动态功能来设置它。通常,您只需执行以下操作即可:
class Foo {
String bar
}
Foo foo = new Foo
foo."bar" = 'foobar'
这行得通。但是如果你有嵌套对象呢?就像是:
class Foo {
Bar bar
}
class Bar {
String setMe
}
现在我想使用动态设置,但是
Foo foo = new Foo()
foo."bar.setMe" = 'This is the string I set into Bar'
返回一个 MissingFieldException。
有什么提示吗?
更新:感谢蒂姆为我指明了正确的方向,那里的初始代码在检索属性方面效果很好,但我需要使用路径字符串设置值。
这是我从蒂姆建议的页面中得出的结论:
def getProperty(object, String propertyPath) {
propertyPath.tokenize('.').inject object, {obj, prop ->
obj[prop]
}
}
void setProperty(Object object, String propertyPath, Object value) {
def pathElements = propertyPath.tokenize('.')
Object parent = getProperty(object, pathElements[0..-2].join('.'))
parent[pathElements[-1]] = value
}