@用于普通Groovy脚本的CompileStatic

@用于普通Groovy脚本的CompileStatic,groovy,Groovy,我不确定这是否已经可行,但是否可以只在普通groovy脚本上使用@CompileStatic,而不将脚本包装到类中 我使用GroovyClassLoader动态解析和编译脚本,因此如果脚本可以使用@CompileStatic,那就太好了。您可以添加: 如果您在命令行上,则可以提供一个--configscript config.groovy。有一个脚本应该是什么样子的示例: withConfig(configuration) { ast(groovy.transform.CompileS

我不确定这是否已经可行,但是否可以只在普通groovy脚本上使用@CompileStatic,而不将脚本包装到类中

我使用GroovyClassLoader动态解析和编译脚本,因此如果脚本可以使用@CompileStatic,那就太好了。您可以添加:


如果您在命令行上,则可以提供一个
--configscript config.groovy
。有一个脚本应该是什么样子的示例:

withConfig(configuration) {
    ast(groovy.transform.CompileStatic)
}

您可以将@CompileStatic注释添加到类或方法中

它不适用于整个脚本,但您可以将其添加到脚本的某些方法或某些类中

您必须在脚本或类的导入中添加导入groovy.transform.CompileStatic

例如,您可以在GroovyConsole中尝试以下脚本,对方法注释进行注释/取消注释:

import groovy.transform.CompileStatic


@CompileStatic
void loop() {
    def d1 = new Date();

    int[] t = new int[32*1024*1024]
    (0 .. 32*1024*1024-1).each { 
        it -> t[it] = it
        }

    def d2 = new Date();

    println d2.getTime() - d1.getTime()
}

loop()
import groovy.transform.CompileStatic


@CompileStatic
void loop() {
    def d1 = new Date();

    int[] t = new int[32*1024*1024]
    (0 .. 32*1024*1024-1).each { 
        it -> t[it] = it
        }

    def d2 = new Date();

    println d2.getTime() - d1.getTime()
}

loop()