今日の一言
2012/06/06(Wed) デッドライン直前の仕様変更は鬼過ぎる [長年日記] 23:30現在曇 23℃
_ [Android][java]Android(Java)のアプリ作成時にOverrideでEclipseがエラー吐く場合
参考:
http://d.hatena.ne.jp/hirai428/20101111/1289465268 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36667&forum=12
例えば、以下のようなAndroidのコードを書いた場合に次のようなエラーが出ることがある。
「型 new DialogInterface.OnKeyListener(){} のメソッド onKey(DialogInterface, int, KeyEvent) はスーパークラスのメソッドをオーバーライドする必要があります」
private AlertDialog.Builder builder; builder = new AlertDialog.Builder(this); builder.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (KeyEvent.KEYCODE_BACK == keyCode && KeyEvent.ACTION_DOWN == event.getAction()) { return true; } return false; } });
この場合、ウィンドウ→設定→Java→コンパイラーの「コンパイラー準拠レベル」を1.6以上に設定すればエラーが出なくなる。
これは、onKey()がabstractメソッドとして実装されているため。
JDKの準拠レベルが1.5の場合、既に実装されているメソッドのオーバーライドしかできないため、abstractメソッドを実装しようとするとエラーが出てしまう。
よって、abstractメソッドのオーバーライドを許容するようになったJDKの準拠レベル1.6以降に設定することで無事にコンパイルできるようになる。
以上。
[TrackBack URL: http://akihiro-i.net/~akihiro-i/diary/tb.rb/20120606]