1

Ubuntu Linux で作成され、OpenJDK 6 でコンパイルされたリポジトリでは、LocationListener と SensorListener を実装するときに@Override、継承されたメソッドの上にタグを追加すると正常にコンパイルされます。

しかし、リポジトリが Oracle Java を使用して Windows システムに複製されると、@Overrideエラーが発生する場合があります。以下の例: The method onAccuracyChanged(Sensor, int) of type ExpeditionActivity must override a superclass method

このエラーは@Override、インターフェイスの実装から継承されたメソッドの上に追加した場合にのみ発生するようです。基本クラスから継承されたメソッドの上に追加@Overrideしても、エラーは生成されません。元のメソッドのロジックを実際にオーバーライドしているため、これは実際には理にかなっています。

@OverrideSO、継承されたインターフェースメソッドの上に書くのは文法的に正しいですか?

4

2 に答える 2

3

@OverrideJDK 5 の基本クラス メソッドに限定されます。

JDK 6 では、@Overrideインターフェース メソッドに適用する機能が導入されました。

@Overrideインターフェイスメソッドで使用するには、JDK6/JDK6 言語レベルを使用するように Eclipse を設定する必要があります。

あなたの質問に答えるには、「はい、JDK 6+でコンパイルしている場合」。

于 2012-10-06T22:51:34.447 に答える
0

私は時々それを得ています。その理由が何であるかはよくわかりません。

私が見つけたいくつかの修正方法。多分それらのいくつかはあなたのために働くでしょう

  • メソッド宣言を削除して書き直すだけで役立つ場合があります。
  • パラメータと戻り値が正しいことを確認してください。たとえば、Andrdid では、拡張時にAsyncTask拡張クラス 3 パラメーターを指定します。これらのパラメーターに基づいて、メソッドを正しいパラメーターと戻り値でオーバーライドする必要があります。
  • インターフェイス/基本クラスにメソッドが必要な場合は、メソッドを削除してみてください。インターフェイス/基本クラスの下にエラーが表示されます。マウスカーソルをその上に置き、これを選択するAdd Unimplemented methodsと、Eclipseにこれらのメソッドが追加され、本文を再入力する必要がありますが、エラーは消えます.

@Override注釈を削除してもコードには影響せず、コードは正しくコンパイルおよび実行されるため、これは Eclipse のエラーだと思います。

幸運を

于 2012-10-06T22:43:42.717 に答える