我要将groovy API abit国际化。
最终课程(例如字符串)
String.metaClass.вСтроку = {-> this.toString() }
但是,这会产生额外的关闭。有没有办法用另一种方法alias
方法?
这样的事情:
String.metaClass.вСтроку = String.metaClass.&toString
答案 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