使用 GStrings 可以访问对象的属性,包括嵌套属性。但是如何访问列表属性中的第 n 个元素呢?
class Foo {
List<Bar> elements
}
class Bar {
String version
}
我需要使用 GString 访问特定索引的 Foo.elements 对象中的版本属性。 尝试了以下代码但没有成功。
def property = "elements[0].version"
fooObject."$property" fails to identify the property
最佳答案
所以我认为可以通过三种方式解决这个问题,这取决于允许的灵 active 有多大
class Foo {
List<Bar> elements
}
class Bar {
String version
}
假设 fooObject
是 Foo
的对象,例如:
def fooObject = new Foo(elements:[new Bar(version:1), new Bar(version:2)])
如果这对你来说可能:
println fooObject."elements"[1]."version"
否则,将所有内容放入一个字符串中,然后进行插值:
println "${fooObject.elements[1].version}"
最终,如果以上两者都不适合您:
def property='elements[1].version' def expr = 'fooObject.' + property println Eval.me('fooObject', fooObject, expr)
最后一个使 fooObject
可用作正在评估的表达式的 fooObject
并评估表达式。
关于groovy - 使用 gstring 访问列表属性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22993660/