我正在使用Grails 2.3.8构建系统来构建我的Grails项目(即,构建在Gant之上的默认系统).
当我用@ java.lang.Override注释我的方法时,即使该方法在父类中没有覆盖任何内容,Grails也不会使编译失败.
当我使用groovyc直接编译时,一切正常.
是否有我没有启用的编译选项?:)
Grails 2.3.8使用Groovy 2.1.9.在那个版本的Groovy中,@ Override注释在(至少)我使用它的情况(最基本的情况)中不受尊重:
class A {
def foo() {}
}
class B extends A {
@Override
def foo(String s) {}
}
Run Code Online (Sandbox Code Playgroud)
在那个版本的Groovy(2.1.9)中,上面的代码编译得很好.
然后我下载了最新版本的Groovy(截至目前为止,2.4.1)并尝试编译同一个类.编译器抛出了我预期的错误:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
foo.groovy: 7: Method 'foo' from class 'B' does not override method from its superclass or interfaces but is annotated with @Override.
@ line 7, column 2.
@Override
^
1 error
Run Code Online (Sandbox Code Playgroud)
更新:实际上,即使是Groovy 2.1.9,也有两种方式来表达@Override:
归档时间: |
|
查看次数: |
3159 次 |
最近记录: |