如何使用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 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |