『Effective Java 第2版 (The Java Series)』を読むまで知らなかったのですが、Java SE 5 から Java SE 6 に移行する際に @Override アノテーション*1の使用方法が変更になっていたそうで。 一言で言えば、「インターフェースに宣言されているメソッドをオーバーライドする際にも @Override アノテーションを使える」ように拡張されました。 確かに Java SE 5 の頃に何故こういう風に使えないんだ!と思ったことがありましたが、拙者だけではなかったのですね。 以下で、Java SE 5 と Java SE 6 の間の @Override アノテーションの使い方の違いを、サンプル・コードを用いて見ていきましょう。 分類表 拡張する型 (extends) と拡張される型 (super) で、有り得る組合せは以下の表の通り: extend