具有特征的Groovy扩展方法?

时间:2016-04-19 07:51:02

标签: groovy extension-methods mixins traits

我想知道是否有任何方法可以使用Groovy特性向库类添加方法。

从我读到的here @Mixin用于此,或者您可以使用运行时mixin方法与元类。既然@Mixin现在deprecated支持特征,那么通过使用特征来实现相同行为的任何机会还是运行时混合是唯一的选择?

谢谢

1 个答案:

答案 0 :(得分:0)

  

Groovy还支持在运行时动态实现traits。它   允许您使用特征“装饰”现有对象。

你可以装饰一个对象,但是,我担心它不可能装饰一个类,所以它的所有实例都有可用的方法。请参阅下面的一个简单示例,它可以帮助您或查找更多详细信息here

trait Extra {
    String extra() { "I'm an extra method" }            
}

class Something {                                       
    String doSomething() { 'Something' }                
}

def s = new Something() as Extra                        

assert s.extra() == "I'm an extra method"                                               
assert s.doSomething() == 'Something'