!!!アノテーション http://www.syboos.jp/java/doc/annotation-summary.html 1)Javaアノテーションは注釈。Javaアノテーションはその名の通り、注釈です。クラスやメソッドなどに付与された関連情報(メタデータ)のことです。通常の場合、ソースにはビジネスロジックを書きますが、ビジネスロジック以外のものを書きたい場合、Javaアノテーションを用います。   ※とは言っても、ソースに書くJavadocようなものではありません。 2)Javaアノテーションは付加情報。なので、あってもなくてもソースに書かれたビジネスロジック(プログラムの動作)に影響を与えません。 3)package, class, method, fieldなどに付加可能。 4)コンパイルされたclassファイル内にもアノテーションが残る。 !!!アノテーション作成方法 http://www.ne.jp/asahi/hishidama/home/tech/java/annotation.html @interface でアノテーションを宣言できる。 {{code Java, public @interface SampleAnnotation { } }} Targetアノテーション を使うとアノテーションの指定場所を限定できる。 {{code Java, @Target(ElementType.FIELD) //フィールドにだけ付けられる指定 public @interface PlaceSampleAnnotation { } }} 例えば、Override アノテーションは {{code Java, @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } }} !!!アノテーション情報の実行時の取得 getDeclaredAnnotations を使う。以下サンプル {{code Java, @Retention(RetentionPolicy.RUNTIME) public @interface StringAnnotation { String value(); } }} {{code Java, @StringAnnotation("クラスだよーん") public class サンプル { @StringAnnotation("コンストラクダ") public サンプル() { } @StringAnnotation("フィールドだでよ") public int n; @StringAnnotation("メッソド") public void function( @StringAnnotation("ひきすう") int param, @StringAnnotation("いんすう") int p2 ) { @StringAnnotation("ローカル変数ぞなもし") int a = 1; } } }} {{code Java, 実行中にアノテーションの内容を表示する例: public static void main(String[] args) { Class clazz = サンプル.class; dump("クラス", clazz.getDeclaredAnnotations()); Constructor[] cs = clazz.getConstructors(); dump("コンストラクター", cs[0].getDeclaredAnnotations()); Field[] fs = clazz.getDeclaredFields(); dump("フィールド", fs[0].getDeclaredAnnotations()); Method[] ms = clazz.getDeclaredMethods(); dump("メソッド", ms[0].getDeclaredAnnotations()); Annotation[][] ma = ms[0].getParameterAnnotations(); dump("引数1", ma[0]); dump("引数2", ma[1]); //ローカル変数のアノテーションはどうやって取得するんだろう?? } public static void dump(String message, Annotation[] as) { System.out.println(message); for (Annotation a : as) { System.out.println(a); } } }} {{category2 プログラミング言語,Java}}