将名称/值从Map复制到对象属性

时间:2014-02-14 15:39:24

标签: groovy

我有ObjectMap。我想将Map中的所有名称/值复制为Object中的属性值。

所以,考虑一下:

def tony
def map =  [plenty: "66", none: "0", ...]

我希望tony拥有属性,充足且没有属性,并且他们在map中拥有相应的值?

知道如何以时髦的方式做到这一点吗?

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

class Foo { }

​def tony = new Foo()

def map =  [plenty: "66", none: "0"]

map.each{ k, v -> tony.metaClass.setProperty k, v }

tony.properties.each { println "$it.key -> $it.value" }

<强>输出:

none -> 0
class -> class Foo
plenty -> 66

答案 1 :(得分:3)

如果tony不需要来自特定的类对象,则可以使用Expando

m = [a:1, b:2, c:"foobar"]
e = new Expando(m)
assert e.c == "foobar"