Groovy:轻松设置属性值

时间:2010-10-09 21:49:33

标签: groovy javabeans params

我有一个名称/值对的地图:

def myMap = [
  "username"  : "myname",
  "age" : 30,
  "zipcode" : 10010
]

我有一个名为User defined的类:

class User {
  def username;
  def age;
  def zipcode;
}

我想在bean上调用适当的setter。有一个很好的groovy方式这样做?注意,我可能在myMap中有额外的东西,不会被设置。 (地图是表格参数值图)

我正在考虑使用invokeMethod,但我假设有更好的方法。

1 个答案:

答案 0 :(得分:3)

我发现了这个:Groovy - bind properties from one object to another

我意识到我可以做到以下几点:

def prunedMap = [:]
myMap.each{
    if (User.metaClass.properties.find{p-> p.name == it.key}) {
        prunedMap.put(it.key, it.value)
    }
}

User user = new User(prunedMap)