アノテーションの任意の属性

アノテーションで、任意に指定できる(指定しなくてもいい)ような属性を定義したい場合、
単にデフォルト値を指定すればいいみたい。


@Target(value={ElementType.FIELD})
@Retention(value=RetentionPolicy.RUNTIME)
public @interface Hoge {
String name() default "hoge";
}
でも、default値には定数(?)しか指定できないっぽいので、
nullを指定することはできない。
ということは、アノテーションの属性は絶対nullには
ならないってことなのかな?




おまけ。
JUnit4のTestアノテーションの属性expectedは、default値が指定してある。
# 期待する例外がないテストなのに、expectedを指定するのは
# 変だしめんどい・・・という理由かは知らないけど。


このexpectedのdefault値はNone.classとなっていて、
内部クラスでNone extends Throwableという例外クラスを定義している。
こんな使い方もあるんだなーってことで。