加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用[]获取groovy中的访问对象属性

发布时间:2020-12-14 16:31:12 所属栏目:大数据 来源:网络整理
导读:说我在groovy中有以下代码: class Human { Face face}class Face { int eyes = 2}def human = new Human(face:new Face()) 我想使用[]访问eyes属性: def humanProperty = 'face.eyes'def value = human[humanProperty] 但是这并不像我预期的那样工作(因为
说我在groovy中有以下代码:

class Human {
  Face face
}
class Face {
  int eyes = 2
}
def human = new Human(face:new Face())

我想使用[]访问eyes属性:

def humanProperty = 'face.eyes'
def value = human[humanProperty]

但是这并不像我预期的那样工作(因为这试图访问一个名为“face.eyes”的人类对象的属性,而不是在human.face属性上的eye属性).

有另一种方法吗?

解决方法

您需要评估字符串以获取所需的属性.要做到这一点,你可以做:

humanProperty.split( /./ ).inject( human ) { obj,prop -> obj?."$prop" }

(将humanProperty分解为属性名称列表,然后从人类对象开始依次调用每个属性,将结果传递给下一个迭代.

或者,您可以使用Eval类来执行以下操作:

Eval.x( human,"x.${humanProperty}" )

要使用[]符号,你需要做:

human[ 'face' ][ 'eyes' ]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读