我记得从我的Perl日起,“
use strict”语句导致运行时进行额外的验证. Groovy有相当的吗?
我不喜欢在运行时被编译时可以检测到的东西,比如将一些参数传递给构造函数.
解决方法
Groovy 2.0现在有可选的静态类型检查.如果您在类或方法上放置一个@ groovy.transform.TypeChecked注释,则groovy将使用严格的类Java静态类型规则.
另外,另外还有一个注释@ groovy.transform.CompileStatic是类似的,除了它进一步,实际上编译没有动态打字.为这些类或方法生成的字节码将与直接Java非常相似.
这些注释可以应用于单个类或方法:
import groovy.transform.TypeChecked @TypeChecked class MyClass { ... }
您还可以将它们全局应用于整个项目,而无需使用编译器配置脚本向源文件添加注释.配置脚本应该是这样的:
withConfig(configuration) { ast(groovy.transform.TypeChecked) }
使用-configscript命令行选项运行groovy或groovyc:
groovyc -configscript config.groovy MyClass.groovy
Groovy手册中有更多的信息:
> http://groovy-lang.org/semantics.html#static-type-checking
> http://groovy-lang.org/semantics.html#_static_compilation