@Overrideのエラーを解決してみた

2010/7/9 50258hit

@Overrideでエラー「スーパークラスのメソッドをオーバーライドする必要があります」
が発生する問題の原因が判明し解決しました。

問題



@Overrideを使っているメソッドで
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method
(日本版)スーパークラスのメソッドをオーバーライドする必要があります
というコンパイルエラーが発生する。

quick fix availableに従って@Overrideを削除すればエラーは消えるんですが、原因と対策が分かりました。

解決策


JDKのバージョンを1.6にする。

Windows


全てのプロジェクトを変更する場合
[メニュー] - [Window] - [Preferences]より
[Java]-[Compiler]を選びCompiler compliance levelを1.6にする。
該当のプロジェクトだけを変更するには
[メニュー] - [Project] - [Preferences]より
[Java Compiler]を選びEnable project specific settingsにチェックを入れて
Compiler compliance levelを1.6にする。

Mac


全てのプロジェクトを変更する場合
[メニュー] - [Eclipse] - [環境設定]より
[Java]-[Compiler]を選びCompiler compliance levelを1.6にする。

該当のプロジェクトだけを変更するには
[メニュー] - [Project] - [Preferences]より
[Java Compiler]を選びEnable project specific settingsにチェックを入れて
Compiler compliance levelを1.6にする。

原因


JavaSE5から6への仕様変更で
@Overrideの仕様が変わっていたためでした。
参照:倭マン日記 分かり易く解説されていますが
JDK1.5ではインターフェイスのメソッドを実装するのに@Overrideを付与できなかったのがJDK1.6でOKになったみたい。

OnClickメソッドはOnClickListnerインターフェイスを実装する匿名クラスのメソッドなのでJDK1.5の時点では@Overrideを指定出来なかったと言う事みたいです。

JDK1.6を設定後リコンパイルするとエラーが消えました

前:TwitterのFollow meアイコン作ってみた 次:惑星の旅が面白い

関連キーワード

[Android][Java]

コメント

名前:makiont|投稿日:2011/11/29 21:16

エラーが消えました!初心者なのでテンパってました。有益情報に感謝ですm(__)m

名前:kenz|投稿日:2011/12/01 12:42

よかったです。
開発頑張ってください。

名前:ケイズ|投稿日:2011/12/09 20:26

助かりました。勉強にもなりました。ありがとうございます。

名前:名無しさん|投稿日:2012/04/17 11:53

消えることもあります。その時は日本語も文字化けしていました。

コメントを投稿する

名前URI
コメント