2013年5月19日日曜日

【Eclipse】型 Foo のメソッド bar() はスーパークラスのメソッドをオーバーライドする必要があります


Eclipse に既存のプロジェクトをインポートしたら
型 Foo のメソッド bar() はスーパークラスのメソッドをオーバーライドする必要があります
というエラーがたくさん出ました。
ちゃんとその名前のメソッドを持ったインターフェースを implement してますし、そもそも他の Eclipse 環境ではこのエラー出ませんし。

と思ってググっていたらどうやらこれでした。
'Must Override a Superclass Method' Errors after importing a project into Eclipse

要するに、Eclipse はデフォルトで Java 1.5 を使おうとするのが原因らしいです。
Java 1.5 以前は、 @Override できるのは本当に「スーパークラス」にそのメソッドがある場合だけで、今回のようにインターフェースにあるメソッドは @Override 指定できないのです。(初めて知った)

ということで、Eclipse または個々のプロジェクトのデフォルトを Java 1.6 にすれば解決します。
Windows 版 Eclipse 4.2 なら
 プロジェクト > プロパティ > Java コンパイラー
または
 ウィンドウ > 設定 > Java > コンパイラー
の画面からコンパイラーの準拠レベルを指定できます。(下図を参照)