如何使用groovy mixin添加静态方法

前端之家收集整理的这篇文章主要介绍了如何使用groovy mixin添加静态方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用groovy的mixin功能方法导入为“类(静态)方法”而不是实例方法.当我使用mixin时,即使我在我的mixin类中有一个静态方法,它也会转换为目标类中的实例方法.我希望导入的方法是一个类(静态)方法.有一个很好的方法吗?

解决方法

我不知道使用mixins向类添加静态方法的任何方法,但您可以通过MetaClass.static属性向类添加静态方法.这是一个添加静态fqn()方法的示例,该方法打印类的完全限定名称

Class.MetaClass.static.fqn = { delegate.name }
assert String.fqn() == "java.lang.String"

如果你想将fqn()(和其他静态方法)添加到几个类(例如List,File,Scanner),你可以做类似的事情

def staticMethods = [fqn: {delegate.name},fqnUpper: {delegate.name.toUpperCase()}]    

[List,Scanner].each { clazz ->

    staticMethods.each{methodName,methodImpl ->
        clazz.MetaClass.static[methodName] = methodImpl
    }
}

猜你在找的Groovy相关文章