Javaのアノテーション(Annotation)に、Class、アノテーション、アノテーションの配列を設定した場合の default句の書き方
Javaのアノテーション(Annotation)の属性にアノテーションを設定しているのだが、default句に null が設定できないので、何を設定して良いかわからなかったためいろいろ試行錯誤した。ただ、この書き方が良いのかどうかはよくわからないw
クラス型に関しては ここ を参考にした。
public @interface SampleAnno {
// アノテーション配列の属性を設定した場のデフォルトの書き方
AnnoField[] fields() default {};
// アノテーション型の属性を設定した場のデフォルトの書き方
AnnoField field() default @AnnoField();
@interface AnnoField {
String hoge() default "";
String huga() default "";
}// クラス型の属性を設定した場のデフォルトの書き方
Class type() default DEFAULT.class;
static final class DEFAULT {}
}
ただ、アノテーション内に定数を設定する方法は、maven等で javac コマンドでコンパイルする(Eclipse上ではエラーが出ない)と
SampleAnno.java:31: 注釈 SampleAnno に
がありません。
というような謎のエラーをはくので、別クラスに切り出したほうが良いと思われます。詳しくは こちら。以前ハマったので参考までに。