Есть ли способ добавить конструкторы с помощью расширений 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' )
Об этом стоит спросить в списке рассылки, чтобы узнать, стоит ли добавлять конструкторы в систему расширения модулей.