2012-07-01 47 views
0

在较老的(1.XX)的Groovy的版本中,你可以使用metaClass.constructor有没有办法使用Groovy 2.0扩展

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, "") } 
    } 
} 

回答

0

不,我知道的...

您可以将静态工厂方法添加到示例类,即:

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

然后(添加一个链接到这个类在org.codehaus.groovy.runtime.ExtensionModule文件staticExtensionClasses后场),你可以这样做:

Example.newInstance('arg0') 

这事值得一问的邮件列表,看看构造函数是值得加入到模块扩展系统。

+0

谢谢蒂姆。我很怀疑,但我希望有所不同。我正在尝试让一个项目能够在Groovy 1.x和2之间进行互操作。也许我需要查看“注册您自己的”功能,但是我还没有看到任何文档:-( –

+0

这是我找到的所有:http://docs.codehaus.org/display/GROOVY/Creating+an+extension+module –

+0

是的,这是我发现的。我希望避免“高级模块”位为它只是检查出这些类... –

相关问题