@Overrideアノテーション
Java5 では interface のメソッドの実装に @Override を付けるとエラーとなってしまうが、 Java6 ではエラーにならなくなった。
Struts2の仕組みのような場合 @Override を付けるのは必須だと思う。
例えば、あるアクションで
public class Foo implements SessionAware { : public void setSession( Map map ) { } }
のような事をしていて、色々クラス構成を調整していて
public class Foo { : public void setSession( Map map ) { } }
となった場合に、もはや setSession は呼ばれなくなってしまうが、@Overrideをつけておけば、コンパイルエラーとなり、注意を喚起してくれる。
public class Foo { : @Override // これがあれば、setSession はコンパイルエラーとなる public void setSession( Map map ) { } }
なので、Struts2がDIするものには @Override をつけることにする。
public class Foo implements SessionAware { : @Override // SessionAware public void setSession( Map map ) { } }
ちょっとTIPS:こうしても所定のインターセプターが入っていなければ呼ばれない、インターセプターが無い場合をチェックするような仕組みが欲しい
参考: 「アノテーションに @Override があるのに @Implements のようなものがないのはなぜ?」(1) Java Solution − @IT