加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:22:33 所属栏目:大数据 来源:网络整理
导读:我想使用groovy的mixin功能将方法导入为“类(静态)方法”而不是实例方法.当我使用mixin时,即使我在我的mixin类中有一个静态方法,它也会转换为目标类中的实例方法.我希望导入的方法是一个类(静态)方法.有一个很好的方法吗? 解决方法 我不知道使用mixins向类
我想使用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
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读