我注意到 groovy OOP 上有一个非常奇怪(或错误)的行为。我想确定这是正常的。
我有一个接口和一个类(在 grails 项目中),例如:
界面
package it.rascio.test
interface MyInterface {
public Object myMethod()
public ArrayList<? extends Observable> secondMethod()
}
班级
package it.rascio.test
import java.util.ArrayList;
import java.util.Observable;
class MyImplementation implements MyInterface {
@Override
public Object myMethod() throws Exception{
return null;
}
@Override
public ArrayList<String> secondMethod() {
// TODO Auto-generated method stub
return null;
}
}
你怎么看这在概念上是错误的,因为myMethod没有声明throws子句,而实现接口的类却声明了
并且secondMethod
需要 aList
的Observable
对象,但是实现类声明了 a List
of String
(那不是 a Observable
)。
使用此代码 STS (eclipse) 告诉我存在编译错误,但如果我尝试启动grails compile
命令,它可以工作!
这怎么可能?这是一个错误还是什么?