【问题标题】:Groovy extension method with traits?具有特征的 Groovy 扩展方法?
【发布时间】:2016-08-11 06:00:20
【问题描述】:
我想知道是否有任何方法可以使用 Groovy 特征向库类添加方法。
从我读到的here @Mixin 用于此目的,或者您可以将运行时 mixin 方法与元类一起使用。由于@Mixin 现在deprecated 支持特征,因此有没有机会通过使用特征来实现相同的行为,或者运行时混合是唯一的选择吗?
谢谢
【问题讨论】:
标签:
groovy
extension-methods
mixins
traits
【解决方案1】:
Groovy 还支持在运行时动态实现特征。它
允许您使用特征“装饰”现有对象。
你可以装饰一个对象,但是,恐怕不可能装饰一个类,使其所有实例都有可用的方法。请参阅下面的一个简单示例,它可能会对您有所帮助或找到更多详细信息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'