0

私はそれがうまくいくはずだと知っていますが、うまくいきません。次のように定義されたクラス継承があります。

public class VisitManagementForm extends FormWithTitle implements Property.ValueChangeListener {

現在は extends からのメソッドのオーバーライドのみが許可されており、Property.ValueChangeListener からメソッドを実装/オーバーライドすることはできず、実際には許可されていません。何故ですか?実装の場所を拡張で切り替えたところ、実装のみが機能し、拡張は表示されませんでした。

最近、プロジェクトを Maven に変更しましたが、Maven がこの狂気を引き起こしている可能性はありますか? たぶん、これを許可するために何かを指定する必要がありますか?それとも、ここで何かが足りないのですか?

Property.ValueChangeListener は、次のようにこのメソッドを強制的に実装することになっています。

    @Override
public void valueChange(ValueChangeEvent event) {
    // TODO Auto-generated method stub

}

ただし、スーパータイプメソッドをオーバーライドまたは実装する必要があるというエラーが表示されます...

編集: プロジェクトに Java 1.6 を使用しています。

編集: また、何か他のものを実装しようとすると (extens をそこに残したまま)、メソッドを実装するように提案されますが、ValueChangeListener を実装する場合は何も実装するように提案されませんが、extend を削除してそのままにしておくと、 ValueChangeListener を実装するだけで、そのメソッドを再度実装することを提案します。しかし、拡張を維持している限り、上記のエラーが発生するようです。

4

3 に答える 3

3

Java 5 でインターフェースを実装するメソッドに @Override アノテーションを追加できないことに注意してください。エラーが発生します。Java 6で許可されています

ソース

于 2013-01-10T04:43:54.427 に答える
2

あなたがしていることは、違法な多重継承です。Java言語仕様のこの例を確認してください

于 2013-01-10T04:42:01.657 に答える
0

これが maven に切り替える前に機能していたコードである場合、その理由は、maven コンパイラ プラグインがデフォルトでソース バージョンを に設定している可能性があります。つまり、別の回答で既に述べたように、インターフェイス メソッドに1.5は使用できません。@Override

于 2013-01-10T04:51:52.663 に答える