我想使用 groovy 的 mixin 功能将方法导入为“类(静态)方法”而不是实例方法。当我使用 mixin 时,即使我的 mixin 类中有一个静态方法,它也会被转换为目标类中的实例方法。我希望导入的方法是类(静态)方法。有没有好的方法可以做到?
最佳答案
我不知道有什么方法可以使用 mixins 向类添加静态方法,但是您可以通过 metaClass.static
向类添加静态方法。属性(property)。这是一个添加静态 fqn()
的示例打印类的完全限定名称的方法
Class.metaClass.static.fqn = { delegate.name }
assert String.fqn() == "java.lang.String"
如果您想添加
fqn()
(和其他静态方法)到几个类(例如列表、文件、扫描仪),你可以做类似的事情def staticMethods = [fqn: {delegate.name}, fqnUpper: {delegate.name.toUpperCase()}]
[List, File, Scanner].each { clazz ->
staticMethods.each{methodName, methodImpl ->
clazz.metaClass.static[methodName] = methodImpl
}
}
关于groovy - 如何使用 groovy mixin 添加静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2490193/