Есть ли способ добавить конструкторы с помощью расширений Groovy 2.0

В более старых (1.xx) версиях Groovy вы можете добавлять конструкторы, используя metaClass.constructor

Example.metaClass.constructor << { String arg0 -> new Example(arg0, "") }

Есть ли способ зарегистрировать конструкторы, используя новые модули расширения Groovy 2.0?

Это похоже на работу:

Определите класс расширения как нормальный для Groovy 2 и просто добавьте конструкторы в статический инициализатор

public class ExampleHelper {
    static {
        Example.metaClass.constructor << { String arg0 -> new Example(arg0, "") }
    }
}

1 ответ

Решение

Не то, что я знаю из...

Вы можете добавить статический метод фабрики в класс Example, т.е.

class ExampleExtensionStatic {
  public static Example newInstance( Example type, String arg0 ) {
    new Example( arg0, '' )
  }
}

Затем (после добавления ссылки на этот класс в staticExtensionClasses поле org.codehaus.groovy.runtime.ExtensionModule файл), вы можете сделать:

Example.newInstance( 'arg0' )

Об этом стоит спросить в списке рассылки, чтобы узнать, стоит ли добавлять конструкторы в систему расширения модулей.

Другие вопросы по тегам