有没有办法使用Groovy 2.0 Extensions添加构造函数

时间:2012-07-01 03:06:34

标签: groovy groovy-2

在较旧的(1.x.x)版本的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 个答案:

答案 0 :(得分:0)

不是我知道......

您可以向Example类添加静态工厂方法,即:

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

然后(在staticExtensionClasses文件的org.codehaus.groovy.runtime.ExtensionModule字段中添加此类的链接后),您可以这样做:

Example.newInstance( 'arg0' )

这是值得在邮件列表上查询的内容,以查看构造函数是否值得添加到Module Extension系统。