Groovy: 通过mixin的方式把函数添加到类
在Groovy中我们可以通过@Mixin注释自爱编译期或运行期动态的想以后的类添加方法。例如:
class Pirate {
def talk(text) {
"Aargh, walk the plank. ${text}"
}
}
// 编译期mixin到Talk类. 这里可以把Pirate里的所有方法添加到Talk类
@Mixin(Pirate)
class Talk {}
assert 'Aargh, walk the plank. Give me a bottle of rum.' == new Talk().talk("Give me a bottle of rum.")
import org.apache.commons.lang.StringUtils
class Parrot {
static String speak(String text) {
/Parrot says "$text"/
}
}
// 运行期mixin到String类.
// mixin() 是Class类在GDK中扩展.
String.mixin Parrot, StringUtils
assert 'Parrot says "mrhaki"' == 'mrhaki'.speak()
assert 'Groovy is so much...' == 'Groovy is so much fun.'.abbreviate(20) // StringUtils mixin.
----
几年前研究过Groovy和Grails, 也用Grails做过实际的项目。 当时感觉Groovy好用,Grails好用!但是这东西毕竟是小众技术,被应用的很少,并且当时还不是特别成熟。 现在Groovy和Grails的版本都已过2.0,这也意味着他们已经走向成熟了。所以想写一系列Groovy和Grails的使用的博客,有原创也有很多从网上收集来例子。 真心希望G2可以被大众接受。
本文深入探讨了Groovy和Grails的技术特点,包括动态编程、编译期和运行期混入方法的实现,以及它们在实际项目中的应用。通过案例展示了如何将Groovy的灵活性和强大的功能性融入到项目开发中。

被折叠的 条评论
为什么被折叠?



