2015-04-17 47 views
0

我是新来groovy,仍然在学习我的方式。有没有一种简单的方法来使用点符号在常规中获取POJO属性值?例如,我有以下POJO:简单的方法来访问groovy中的POJO属性?

public class MyPOJO { 
     protected String name; 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 

} 

在Groovy中,我想获得的名称字段的值如下:

def doSomething (MyPOJO mpj) { 
    def name = mpj.name 
    // do something 
} 

以上不起作用。我知道,我仍然可以使用Java getter和setter方法,但是我想能够得到的地步,我可以动态地拉POJO值,就像这样:

def doSomething (MyPOJO mpj, String propertyName) { 
    def propertyValue = mpj.'${propertyName}' 
    // do something 
} 

我试图避免使用Java反射。谢谢您的帮助!

+1

你能解释一下哪些不适合你吗?你的代码适合我。 –

+2

这就是它应该如何与Groovy协同工作的问题 - 只需稍作修改,当动态访问属性时需要使用GString(双引号)'def propertyValue = mpj。“$ {propertyName}”' – stempler

+0

downvotes,真的吗? – cfrick

回答

0

Michal - 道歉...第一个代码段正在工作,第二个代码段没有。

抽水机 - 工作!这是在啃我。更正片段:

def doSomething (MyPOJO mpj, String propertyName) { 
    def propertyValue = mpj."${propertyName}" 
    // do something 
} 
+0

如果您将“name”作为参数propertyName的值传递,则在其他情况下,将尝试访问缺少的属性时会引发异常。 – user1708042

相关问题