groovy(grails)会像java一样给你编译时检查吗?
如果你总是指定类型,那会改变很多吗?
答案 0 :(得分:15)
从Groovy 2.0开始,可以在编译时检查类型。 注释可用于类或方法:@TypeChecked或@CompileStatic。 第一个告诉编译器在编译期间进行类型检查,第二个强制它执行“静态编译”,这或多或少会产生二进制代码,例如来自本机JAVA编译器。当然,第二个注释的使用涉及自身的类型检查。
Grails 2.2是第一个使用Groovy 2.0的版本。
答案 1 :(得分:13)
Groovy编译器当然会发现语法错误,但几乎没有像Java那样的类型错误。即使使用未声明的变量也经常会通过编译。
声明类型会增加检查的数量,但不会增加。
这是因为Groovy是一种动态语言,具有强大的元编程功能,使编译器无法知道例如给定对象在编译时将具有哪些方法或字段,因为它可以在运行时由其他代码更改。
但是,IDE插件通过将类声明中不存在的声明类型的变量成员标记为可能的错误来提供折衷。然后开发人员可以决定这个成员是否会在运行时出现,或者他是否只是打错了。此外,已知的类成员出现在自动完成中。
答案 2 :(得分:2)
答案 3 :(得分:1)
没有
它被设计成动态类型编程语言,与编译时检查完全相反。
您必须添加更多单元测试。
答案 4 :(得分:1)
Groovy 2.0有@CompileStatic和@TypeChecked你可以在Groovy 2.0和Java http://java.dzone.com/articles/groovy-20-performance-compared之间检查这个性能测试
正如topr所说......在版本2.2之前,这个功能将在grails中可用。
答案 5 :(得分:0)
如果将Groovy与脚本语法一起使用,则无法编写单元测试。这就像为shell脚本编写单元测试一样。不过,你有一个可用的编译器,它只是没有告诉你Sustem.out.println()是无意义的。应该有一个编译器选项来捕获这些错误。并非每个脚本都包含元编程和DSL代码。