Groovy: 通过mixin的方式把函数添加到类

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可以被大众接受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值