-アノテーションの限界

直感的には、Javaアノテーションによるソリューションの限界も近いように思います。用途によってはXMLのほうがとても「優しい」可能性もある。それもこれも、先日のエントリにきしださんがコメントくださったように、Javaアノテーションは継承できないところにあるように思います。

 - 現行仕様枠内 -
public @interface Validation {
  Class< ? extends Validator > validator();
}

こんなのがあったとして、

 - 現行仕様枠外 -
public @interface LengthValidation extends Validation {
  Class< ? extends Validator > validator() default LengthValidator.class;
  int max() default 16;
  int min() default 1;
}

とできて、代入互換性の確保と型の判断ができればOKなんですが。。。いっそのことアノテーションにこそ総称型が入ればいいのにな。どうも現行仕様では柔軟性にもう一息欠けてますね。いままで出来なかった地平を開く技術だけに、期待もデカかった。

 - 現行仕様枠外 -
public @interface Validation< T extends Validator > {
  Class validator();
}

アノテーションについては、このへんの使わせ方のイディオムがまだ積みあがってないのでまだまだ余地がありますね。