Преобразование AST в Groovy: создание макроса для базового конструктора - PullRequest
0 голосов
/ 18 февраля 2011

Я хотел бы сделать макрос, который бы существенно расширил это:

@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 Ответ

1 голос
/ 18 февраля 2011

Вы можете использовать (или скопировать) @groovy.transform.TupleConstructor из groovy 1.8.
Что касается предпочтений ... Мне нравится buildFromSpec, это приводит к меньшему количеству сюрпризов.
Но я бы посоветовал вам попробовать buildFromCode, проверьте его ограничения и причуды, поиграйте со всеми.

...