Java5 と 6、eclipse 3.2.1 と 3.2.2 の微妙な関係

Java5 から導入された @Override アノテーション。Java5 は、親クラスの(抽象も含む)メソッドを継承するもののみに @Override を指定できた。それに対し、Java6 は、親クラスだけではなくインタフェースの実装に対しても @Override を指定できるようになった。

自クラス独自で定義したメソッドなのか、親で定義されてるメソッドなのかわかるようになった(かな)。欲を言えば、親クラスで実装されているメソッドの機能に上書きしているのか、抽象メソッドで実装しなければならなかったのかがわかるようになってるとよかったかな。@Override と @Embodiment と @Implement とか…。まぁ、あまり細かく分けると変更したときに直す箇所が増えて面倒だけど(メソッドから抽象メソッドへ、抽象クラスからインターフェイスへとか)


で、なぜか、eclipse 3.2.1 で JDK6 で Compiler compliance level を 6.0 にしても、インターフェイスの実装メソッドに @Override アノテーションが付いているとエラーになる。ちなみに、3.2.2, 3.3.2 では、エラーにならない。

eclipse 3.2.1 のバグなのかな…、リリース時期にもよるけど単に未対応とか…。どっちにしても、3.4 が出たし(ぉ