Java.lang.annotation.ElementType
:
プログラム要素タイプ。この列挙型の定数は、Javaプログラムで宣言された要素の単純な分類を提供します。これらの定数は Target
メタ注釈とともに使用されます。 typeを使用して、注釈タイプを使用することが適切な場所を指定します。
次の定数があります。
誰かがそれらのそれぞれが何であるかを説明できますか(実際のコードで注釈が付けられる場所)?
これは主なものを要約しています:
@CustomTypeAnnotation
public class MyAnnotatedClass {
@CustomFieldAnnotation
private String foo;
@CustomConstructorAnnotation
public MyAnnotatedClass() {
}
@CustomMethodAnnotation
public String bar(@CustomParameterAnnotation String str) {
@CustomLocalVariableAnnotation String asdf = "asdf";
return asdf + str;
}
}
ANNOTATION_TYPEは、次のような別の注釈の注釈です。
@CustomAnnotationTypeAnnotation
public @interface SomeAnnotation {
..
}
パッケージは、次のようにパッケージのpackage-info.Java
ファイルで定義されます。
@CustomPackageLevelAnnotation
package com.some.package;
import com.some.package.annotation.PackageLevelAnnotation;
ElementType
を指定する注釈はYourAnnotation
と呼ばれるとしましょう:
ANNOTATION_TYPE-注釈タイプの宣言。 注:これは他の注釈にも適用されます
@YourAnnotation
public @interface AnotherAnnotation {..}
CONSTRUCTOR-コンストラクター宣言
public class SomeClass {
@YourAnnotation
public SomeClass() {..}
}
FIELD-フィールド宣言(enum定数を含む)
@YourAnnotation
private String someField;
LOCAL_VARIABLE-ローカル変数宣言。 注:これは実行時に読み取ることができないため、@SuppressWarnings
アノテーションなどのコンパイル時のものにのみ使用されます。
public void someMethod() {
@YourAnnotation int a = 0;
}
METHOD-メソッド宣言
@YourAnnotation
public void someMethod() {..}
PACKAGE-パッケージ宣言。 注:これはpackage-info.Java
でのみ使用できます。
@YourAnnotation
package org.yourcompany.somepackage;
パラメータ-パラメータ宣言
public void someMethod(@YourAnnotation param) {..}
TYPE-クラス、インターフェース(注釈タイプを含む)、または列挙宣言
@YourAnnotation
public class SomeClass {..}
特定の注釈に複数のElementType
sを指定できます。例えば。:
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
[〜#〜] type [〜#〜]:
注釈:
@Target({ElementType.TYPE}) // This annotation can only be applied to
public @interface Tweezable { // class, interface, or enum declarations.
}
および使用例:
@Tweezable
public class Hair {
...
}