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

标签 groovy static methods mixins

我想使用 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/

相关文章:

json - 无法将JSONObject从Grails Controller 传递到Grails服务

java - jar 文件可以在 eclipse 文件夹中使用,但不能在其中使用。未找到主类

java - 为复制任务创建动态全局列表的 Gradle 任务顺序排除

groovy - 如何在 Groovy 中重载 in 运算符?

Java : static keyword in middle of class

C++ 指向类方法的指针

static - 为什么 Rust 中的 const 函数不能调用关联函数?

c# - 静态类与实例类

python - 在类中调用父类的 __call__ 方法

Java,如何使用将字符串和整数添加到数组中