Groovy: установка значений свойств легко - PullRequest
1 голос
/ 10 октября 2010

У меня есть карта с парами имя / значение:

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

У меня есть класс с именем User:

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

Я бы хотел вызвать соответствующие сеттеры на бобе. Есть ли хороший отличный способ сделать это? Обратите внимание, что в myMap могут быть дополнительные материалы, которые не будут установлены. (Карта является картой значений параметров формы)

Я думал об использовании invokeMethod, но предполагал, что есть лучший способ.

1 Ответ

3 голосов
/ 10 октября 2010

Я нашел это: Groovy - связать свойства одного объекта с другим

И я понял, что могу сделать следующее:

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)
...