2012-07-01 79 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

是的,這是我發現的。我希望避免「高級模塊」位爲它只是檢查出這些類... –

相關問題