annotation

カスタムアノテーション

基本的にはアノテーション型はJavaインタフェースとなる。
必然的にアノテーション型は通常のJavaインタフェースと
ほとんど同一になる。
でもアノテーション型ではinterfaceではなく@interfaceキーワードを使用。
@interfaceキーワードにより、コンパイラは通常のインタフェースではなく
アノテーション型であることを認識するようだ。

マーカアノテーション
package jp.co.abby.ex01;
public @interface Foo { }

上記アノテーションは自由に使用可能

@jp.co.abby.ex01.Foo
public void hoge(String s, int i){
}
単一メンバを持つアノテーション
package jp.co.abby.ex01;
public @interface Bar{
    String value();
}

上記宣言だと、メンバ宣言じゃなくメソッド宣言になっているが
コンパイラメソッドと同じ名前を持つメンバ変数を自動的に作成する。