@CompileStatic用于普通的Groovy脚本

时间:2016-07-27 17:08:09

标签: groovy

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

我正在使用GroovyClassLoader来动态解析和编译脚本,所以如果脚本可以使用@CompileStatic

那就太好了

2 个答案:

答案 0 :(得分:1)

您可以添加compiler customizer

configuration.addCompilationCustomizers(
    new ASTTransformationCustomizer(CompileStatic))

如果您在命令行上,则可以提供--configscript config.groovyThis answer有一个脚本应如何显示的示例:

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

答案 1 :(得分:1)

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

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

您必须在脚本或类的导入中添加 import 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()