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 に がありません。

というような謎のエラーをはくので、別クラスに切り出したほうが良いと思われます。詳しくは こちら。以前ハマったので参考までに。