Groovy有"使用严格"吗?

rip*_*234 13 groovy

我记得在Perl的日子里," use strict "语句会导致运行时进行额外的验证.是否有Groovy的等价物?

我不喜欢在运行时被编译时可以检测到的东西咬住,比如将一些参数传递给构造函数.

ata*_*lor 20

Groovy 2.0现在有可选的静态类型检查.如果@groovy.transform.TypeChecked在类或方法上放置注释,groovy将使用类似Java的静态类型规则.

此外,还有另一个@groovy.transform.CompileStatic类似的注释,除了它更进一步,实际上编译它没有动态类型.为这些类或方法生成的字节代码与直接Java非常相似.

这些注释可以应用于单个类或方法:

 import groovy.transform.TypeChecked

 @TypeChecked
 class MyClass {
      ...
 }
Run Code Online (Sandbox Code Playgroud)

您还可以将它们全局应用于整个项目,而无需使用编译器配置脚本向源文件添加注释.配置脚本应如下所示:

withConfig(configuration)  {
    ast(groovy.transform.TypeChecked)
}
Run Code Online (Sandbox Code Playgroud)

运行groovygroovyc使用-configscript命令行选项:

groovyc -configscript config.groovy MyClass.groovy
Run Code Online (Sandbox Code Playgroud)

Groovy手册中有更多信息: