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;
}
}
インターフェイスを実装するクラスが throws 句を宣言しているのに対し、myMethodはthrows句を宣言していないため、これが概念的に間違っていることがわかります。
また、オブジェクトのsecondMethod
必要がList
ありますが、実装クラスはof をObservable
宣言します(それは ではありません)。 List
String
Observable
このコード STS (Eclipse) を使用すると、コンパイル エラーがあることがわかりますが、grails compile
コマンドを起動しようとすると、うまくいきます!
それはどのように可能ですか?それはバグですか、それとも何ですか?