我不确定这是否已经可行但是是否可以在普通的groovy脚本上使用@CompileStatic而不将脚本包装在类中?
我正在使用GroovyClassLoader来动态解析和编译脚本,所以如果脚本可以使用@CompileStatic
那就太好了答案 0 :(得分:1)
您可以添加compiler customizer:
configuration.addCompilationCustomizers(
new ASTTransformationCustomizer(CompileStatic))
如果您在命令行上,则可以提供--configscript config.groovy
。 This 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()