Groovy中的AST转换:创建宏以提供基本构造函数

时间:2011-02-18 01:47:25

标签: groovy macros metaprogramming abstract-syntax-tree

我想制作一个基本上可以扩展它的宏:

@WithBasicConstructor
class Person {
  private String name
  private String address
}

进入这个:

class Person {
  private String name
  private String address

  Person(String name, String address) {
    this.name = name
    this.address = address
  }
}

我一直在阅读@Immutable的代码,以了解它是如何完成的。有人用过新的AstBuilder吗?

任何想法如何实现? AstBuilder之间是否有首选项用于字符串/代码/规范?

1 个答案:

答案 0 :(得分:1)

你可以从groovy 1.8中使用(或复制)@groovy.transform.TupleConstructor 关于偏好...我喜欢buildFromSpec,它会减少意外 但是我建议你试试buildFromCode,测试它的局限性和怪癖,与它们一起玩一点。