使用[]获取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' ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |