@Override アノテーションの仕様の違い

JDK1.6 でコンパイルしてたソースを JDK1.5 でコンパイルしてみたところ @Override アノテーション で大量のエラーとなったので、あれ?となった。


@Override アノテーション の仕様の違いによるものだった。


インタフェイスの実装クラスのメソッドに対しては JDK1.5 では @Override アノテーションは付けられなかったのだが、JDK1.6 では付けられるようになったよう。


JDK1.6 上の IDE で開発したソースコードには、インタフェイスの実装クラスに対して @Override アノテーションが全部付いているのだが、そこが軒並みエラーとなった。


インタフェイスの場合、オーバーライドに失敗していればコンパイルが通らないことが保証されているため、別にここに @Override アノテーションをつける意味は無い。ということで、インタフェイスの実装クラスからは、@Override アノテーションを一律除去することとした。