web-dev-qa-db-ja.com

Eclipseの上書きアノテーションのバグ

Eclipseの@Overrideアノテーションに迷惑な問題があります。作業中のプロジェクトを新しいPCにインポートすると、Eclipseが@Overrideアノテーションの一部を間違っているとマークすることがよくあります。アノテーションを削除するとすべてが問題なく、Eclipseはメソッドが親メソッドをオーバーライドしていることを示していますが、Overrideアノテーションを追加するとエラーが再び発生します。私は現在Androidプロジェクトに取り組んでいるので、Androidでは問題であり、Eclipseでは問題ではないかもしれません。

37
Simon

Java 1.5とJava 1.6の間で切り替えているためです。1.5では、@ Overrideを使用してインターフェース実装をマークできませんでしたが、 1.6。

簡単なGoogle検索で、2つのバージョン間のこの注釈の違いについての良い説明が見つかりました: http://www.techienuggets.com/CommentDetail?tx=38155

@Overrideのセマンティクスは、JDK 1.5とJDK 1.6では異なります。 JDK 1.5では、インターフェースで宣言されたメソッドの実装に対して@Overrideアノテーションは許可されませんが、JDK 1.6では許可されます。詳細については、以下を参照してください。

http://bugs.Sun.com/bugdatabase/view_bug.do?bug_id=500826http://bugs.Sun.com/bugdatabase/view_bug.do?bug_id=6399361http://blogs.Oracle.com/ahe/?entry=override

オーバーライドアノテーションの説明がJDK APIドキュメントで更新されなかったのは事実です。これはバグとして報告されています:

http://bugs.Sun.com/bugdatabase/view_bug.do?bug_id=6501053bugdatabase/view_bug.do?bug_id=650105

46
Mark B

ちょうど行く

 window -> prefrences -> Java -> compiler 

表記法が1.6から始まるため、1.6に設定します。したがって、コンパイルレベルが1.6未満になると、エラーが発生します。

21
neeraj t

Java=コンパイラ設定が構成されている場所がいくつかあります。

1つの方法は、Window->Preferences->Java->Compiler->Compiler Compliance Level -> set 1.6 or aboveを使用することです。別の方法は、Project->Properties->Java Compiler->JDK Compliance -> Select 1.6 or above.を右クリックすることです

また、"プロジェクト固有の設定を有効にする"の選択を解除することもできます。これにより、将来のJDKコンパイラー準拠エラーが解消されます。別のプロジェクトで必要でない限り、JDKバージョンの複数のインスタンスを削除します。

6
kanaparthikiran

使用済みのJava SDKが最新であり、Eclipseが正しいSDKバージョンを使用している(複数インストールされている場合)ことを確認し、Androidプロジェクトを処理する適切なSDKバージョンで...

3
WarrenFaith