groovy(grails)会像java一样给你编译时检查吗?

groovy(grails)会像java一样给你编译时检查吗?

如果你总是指定类型,那会改变很多吗?

Groovy编译器当然会发现语法错误,但几乎没有像Java那样的类型错误。 即使使用未声明的变量也经常会通过编译。

声明类型将增加已完成的检查量,但不会增加太多。

这是因为Groovy是一种动态语言,具有强大的元编程function,使编译器无法知道给定对象在编译时将具有哪些方法或字段,因为它可能在运行时由其他代码更改。

但是,IDE插件通过将具有声明类型的变量成员标记为类声明中不存在的可能错误来提供折衷。 然后开发人员可以决定这个成员是否会在运行时出现,或者他是否只是打错了。 此外,已知的类成员出现在自动完成中。

从Groovy 2.0开始,可以在编译时检查类型。 注释可用于类或方法:@TypeChecked或@CompileStatic。 第一个告诉编译器在编译期间进行类型检查,第二个强制它执行“静态编译”,这或多或少会产生二进制代码,例如来自本机JAVA编译器。 当然,第二个注释的使用涉及自身的类型检查。

Grails 2.2是第一个使用Groovy 2.0的版本。

没有。

它被设计成动态类型编程语言,与编译时间检查几乎完全相反。

您将不得不添加更多unit testing。

Groovy 2.0有@CompileStatic和@TypeChecked你可以在Groovy 2.0和Java之间检查这个好的性能测试http://java.dzone.com/articles/groovy-20-performance-compared

正如topr所说……这个function将在版本2.2之前提供给grails

如果将Groovy与脚本语法一起使用,则无法编写unit testing。 这就像为shell脚本编写unit testing一样。 不过,你有一个可用的编译器,它只是没有告诉你Sustem.out.println()是无意义的。 应该有一个编译器选项来捕获这些错误。 并非每个脚本都包含元编程和DSL代码。