想象一下 nodeBuilder 用来表达一个对象层次结构:
class TestBuilder {
static main(args) {
def builder = new NodeBuilder()
def ulcDate = new Date(107,0,1)
def invoices = builder.invoices{
invoice(date: ulcDate){
item(count:5){
product(name:'ULC', dollar:1499)
}
item(count:1){
product(name:'Visual Editor', dollar:499)
}
}
invoice(date: new Date(106,1,2)){
item(count:4) {
product(name:'Visual Editor', dollar:499)
}
}
}
}
class Invoice {
List items
Date date
}
class LineItem {
Product product
int count
int total()
{
return product.dollar * count
}
}
class Product {
String name
def dollar
}
如何将 NodeBuilder 生成的 invoices 对象实际转换为 Invoice 类的实例,其中所有内容都从 invoices 对象配置?我可能必须使用 GPath 才能这样做(?)但是该代码会是什么样子?
我需要这样做的原因是其他类的其他方法需要 Invoice 类的实例才能进一步操作,并且我猜不会接受 NodeBuilder 输出。