groovy - 使用 gstring 访问列表属性元素

标签 groovy

使用 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
}

假设 fooObjectFoo 的对象,例如:

def fooObject = new Foo(elements:[new Bar(version:1), new Bar(version:2)])
  1. 如果这对你来说可能:

    println fooObject."elements"[1]."version"
    
  2. 否则,将所有内容放入一个字符串中,然后进行插值:

    println "${fooObject.elements[1].version}"
    
  3. 最终,如果以上两者都不适合您:

    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/

相关文章:

grails - 在grails版本2.3.8的request.withFormat关闭中找到默认操作

java - 如何从 gradle 任务运行 groovy 方法?

json - chalice /JSON : recursive data structre for JSON#registerObjectMarshaller

grails - 在Grails GORM中搜索域对象的子级

grails - Grails Mail Plugin无法安装-尝试在Config中修复,但仍然无法正常工作

java - Groovy JsonBuilder : using field names that are variable names too

groovy - 如何将小数转换为整数

java - 旋转图像会导致损坏

java - Groovy 和 grails jdk 问题

regex - 如何找到文件路径字符串的一部分?