「アノテーション」の版間の差分

m
編集の要約なし
m
m
元々の意味は、標本などを閲覧した際に、その標本に対するコメントなどを付すことを指す。そのような情報が書かれたものを、アノテーションカードと呼ぶ。
 
== Javaにおける'''アノテーション''' ==
[[Java (プログラミング言語)|Java]]では、[[Java Platform, Standard Edition|Java SE]] 5 から登場した機能に'''アノテーション'''という名前の機能がある。Javaの'''アノテーション'''は、[[クラス]]や[[メソッド]]、[[パッケージ]]に対して[[メタデータ]]として注釈を記入する。Javaの'''アノテーション'''は実態は{{Javadoc:SE|java/lang|java.lang.Annotation}}インタフェースを[[継承]]した[[インタフェース (情報技術)|インタフェース]](<code>interface</code>)であり、自作することもできる。
 
}
 
=== Javaにおけるメタアノテーション ===
メタアノテーションとは、定義しているアノテーションのみにつけられるアノテーションのことである。メタアノテーションの例としては{{Javadoc:SE|name=@Target|java/lang/annotation|Target}}や{{Javadoc:SE|name=@Retention|java/lang/annotation|Retention}}、{{Javadoc:SE|name=@Documented|java/lang/annotation|Documented}}、{{Javadoc:SE|name=@Inherited|java/lang/annotation|Inherited}}があり、これらはクラスやメソッドなどには使うことができず、アノテーションのみに使うことができる。アノテーションを定義するために使われるアノテーションということから、メタアノテーションと呼ばれる。
 
 
このとき、{{Javadoc:SE|name=@Retention|java/lang/annotation|Retention}}は、新たにアノテーションNewAnnotationを作るとき、このアノテーション情報はソースコードのみにしか保存されないことを意味する。{{Javadoc:SE|name=@Target|java/lang/annotation|Target}}はこのアノテーションをどの型に使うことができるかを指定している。この場合、ANNOTATION_TYPEとMETHODを指定しているのでこのアノテーションはアノテーション型とメソッドにしか使うことができない。つまり、このNewAnnotationもまた、メソッドだけでなくアノテーションにも保存できるため、メタアノテーションとしても使えることを示している。
==== {{Javadoc:SE|name=@Retention|java/lang/annotation|Retention}} ====
メタアノテーション{{Javadoc:SE|name=@Retention|java/lang/annotation|Retention}}には以下の{{Javadoc:SE|java/lang/annotation|RetentionPolicy}}[[列挙型]]を設定することができる。
{|class="wikitable"
|}
 
==== {{Javadoc:SE|name=@Target|java/lang/annotation|Target}} ====
メタアノテーション{{Javadoc:SE|name=@Retention|java/lang/annotation|Target}}には以下の{{Javadoc:SE|java/lang/annotation|ElementType}}[[列挙型]]を設定することができる。これは配列を使って@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})と複数指定することができる。ただし、同じ値を{}内で複数使用するとエラーとなる。これによって型を指定することで、そのアノテーションが、どの型に対して使うことができるのかを指定できる。
{|class="wikitable"
840

回編集