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

Groovy中的AST转换:创建宏以提供基本构造函数,groovy,macros,metaprogramming,abstract-syntax-tree,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

我想制作一个宏,从本质上扩展这一点:

@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 for string/code/spec之间是否有首选选项?

您可以使用(或复制)groovy 1.8中的
@groovy.transform.TupleConstructor

关于偏好。。。我喜欢
buildFromSpec
,它带来的惊喜更少。

但是我建议您尝试一下
buildFromCode
,测试它的局限性和怪癖,并对它们进行一些处理。

这个@WithBasicConstructor会提供哪些@Immutable尚未提供的理想属性?@Immutable会对类应用大量其他内容,而不是我想要的