Reflection 在groovy中访问POJO属性的简单方法?

Reflection 在groovy中访问POJO属性的简单方法?,reflection,groovy,pojo,gstring,Reflection,Groovy,Pojo,Gstring,我是groovy新手,仍然在学习。在groovy中是否有一种使用点表示法获取POJO属性值的简单方法?例如,我有以下POJO: public class MyPOJO { protected String name; public String getName() { return name; } public void setName(String name) { this.name

我是groovy新手,仍然在学习。在groovy中是否有一种使用点表示法获取POJO属性值的简单方法?例如,我有以下POJO:

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

}
在groovy中,我希望获得name字段的值,如下所示:

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反射。谢谢你的帮助

迈克尔-道歉。。。第一个代码段正常工作,第二个不正常

斯泰普勒-那奏效了!这让我心烦意乱。更正的代码段:

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

你能解释一下什么不适合你吗?您的代码对我来说是有效的。这正是Groovy的工作方式-稍加修改,在动态访问属性def propertyValue=mpj时需要使用GString双引号。${propertyName}如果您将名称作为参数propertyName的值传递,它将起作用,在其他情况下,尝试访问丢失的属性会引发异常。