使用Groovy在类中使用方法别名

时间:2013-11-22 20:02:57

标签: groovy

我要将groovy API abit国际化。

最终课程(例如字符串)

String.metaClass.вСтроку = {-> this.toString() }

但是,这会产生额外的关闭。有没有办法用另一种方法alias方法?

这样的事情:

String.metaClass.вСтроку = String.metaClass.&toString

1 个答案:

答案 0 :(得分:2)

您可以像这样使用@Category转换

@Category(String) class StringInternationalization {
    String вСтроку() {
        this.toString()
    }

    int длина() {
        this.length()
    }
}

class ApplyMixin {
    static {
        String.mixin(StringInternationalization)
        final helloString = "Привет мир!"
        println helloString.вСтроку()
        assert helloString.длина() == helloString.length()
    }
}

new Main()

这将为每个本地化类创建一个Category类,并为一个类应用所有mixin转换(注册所有方法。)也应该更快,然后单独关闭。

更多阅读:http://groovy.codehaus.org/Category+and+Mixin+transformations