アノテーションの定義
アノテーションは、@interface を使って、
public @interface Developer {}
アノテーションのメンバは、メソッド形式で定義される。
そのメソッドには以下の制約がある。
public @interface Developer { int id(); String name(); String date(); Class[] favoriteClasses(); }
メンバには初期値を持たせることができる。
public @interface Developer { int id(); String name() default "no name"; String date() default "1900/01/01"; Class[] favoriteClasses() default {java.util.HashMap.class, java.util.List.class}; }
上記のアノテーションは、以下のように使用できる。
@Developer( id = 1000, name = "Yamada Taro", date = "2004/10/21", favoriteClasses = {java.lang.System.class, java.io.FileInputStream.class} ) public class Hoge { ・・・ }
defaultの定義がないものは省略が可能。
@Developer( id = 1000 ) public class Hoge { ・・・ }
また、valueというメンバは特殊で、例えば以下のようにNoteアノテーションを定義すると、
public @interface Note { String value(); }
value=XXXって書かないで値を指定できる。
・・・ @Note("メソッドの説明") public void hello() { } ・・・