0

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宣言します(それは ではありません)。 ListStringObservable

このコード STS (Eclipse) を使用すると、コンパイル エラーがあることがわかりますが、grails compileコマンドを起動しようとすると、うまくいきます!

それはどのように可能ですか?それはバグですか、それとも何ですか?

4

0 に答える 0