Groovy类中的方法别名
我将把groovy API国际化 最后一节课(如字符串) 但是,这将创建额外的闭包。难道没有任何方法可以将Groovy类中的方法别名,groovy,Groovy,我将把groovy API国际化 最后一节课(如字符串) 但是,这将创建额外的闭包。难道没有任何方法可以将alias方法与另一个方法结合起来吗 大概是这样的: String.metaClass.вСтроку = String.metaClass.&toString 您可以像这样使用@Category转换 @Category(String) class StringInternationalization { String вСтроку() { this.to
alias
方法与另一个方法结合起来吗
大概是这样的:
String.metaClass.вСтроку = String.metaClass.&toString
您可以像这样使用@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转换(注册所有方法)创建一个Category类。这也应该比单个闭包更快
更多阅读:创建额外闭包有什么问题?将创建额外的java.class。如果我要将所有groovy API国际化,这不是最佳选择。谢谢。我会分析你的建议,然后再给你回复。扩展也是一种很好的方法,因为它们不需要
静态{}
块
@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()