【发布时间】:2014-10-07 17:02:57
【问题描述】:
我正在做一些严重的事情,比如使用 Groovy 的 metaClass 和 Eval 从 XML 导入中为对象动态分配属性:
class ObjectBuilder {
def assignProp(String propName, String propValue) {
Eval.x(this, "x.metaClass.${propName} = '${propValue}'")
}
}
def h = new ObjectBuilder()
h.assignProp('name', 'Henson')
println(h.name)
不过,我想做的是能够在其内部实例化该类的另一个副本:
Eval.x(this, "x.metaClass.${ObjName} = new ObjectBuilder()")
但我不能,因为我认为该类没有传递给绑定。还有其他解决方案吗?
【问题讨论】:
-
你想做什么?你能提供更多的背景信息吗?您有一个 XML,您从中解析出一个对象并尝试向其中添加一个动态属性?或者它是来自
Xml{Parser|Builder}的Node?为什么要实例化ObjectBuilder?主要目标是什么? -
嘿@WillP,我想我学到的东西比什么都多;-) 我正在做的是阅读 XML,但我想基于它创建一个对象,使用我的规范作为字符串传入(我只想要 XML 中的一些内容,并且采用不同的结构。)这部分正是我尝试动态构建对象的地方。
标签: grails groovy groovyshell