Groovy 将名称/值从映射复制到对象属性

Groovy 将名称/值从映射复制到对象属性,groovy,Groovy,我有一个对象和一个地图。我想将映射中的所有名称/值复制为对象中的属性值 因此,考虑到: def tony def map = [plenty: "66", none: "0", ...] 我希望tony拥有大量和无属性,并希望它们在映射中具有相应的值 你知道如何用groovy的方式做这件事吗?你可以使用以下方法: class Foo { } ​def tony = new Foo() def map = [plenty: "66", none: "0"] map.each{ k, v

我有一个
对象
和一个
地图
。我想将映射中的所有名称/值复制为
对象中的属性值

因此,考虑到:

def tony
def map =  [plenty: "66", none: "0", ...]
我希望tony拥有大量和无属性,并希望它们在
映射中具有相应的值


你知道如何用groovy的方式做这件事吗?

你可以使用以下方法:

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

您可以使用以下内容:

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

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


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


tony=map
?我不明白这个问题。。。为什么不直接使用地图?
tony=map
?我不明白这个问题。。。为什么不用地图呢?