Java アノテーションはコードに付加されたメタ情報であり、コンパイル時や実行時に解析して使用するために一部のツールによって使用され、説明と構成の機能を果たします。
アノテーションはコードの実際のロジックに影響を与えることはなく、影響を与えることはできません。アノテーションはサポート的な役割を果たすだけです。 java.lang.annotation パッケージに含まれています。
1. メタアノテーション
メタアノテーションとは、アノテーションのアノテーションを指します。 @Retention @Target @Document @Inherited の 4 種類です。
1.1、@Retention: アノテーションの保持ポリシーを定義します
Java コード
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy.CLASS) //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(RetentionPolicy.RUNTIME)//注解会在class字节码文件中存在,在运行时可以通过反射获取到
1.2. @Target: アノテーションの目的を定義します
Java コード
@Target(ElementType.TYPE) //接口、类、枚举、注解 @Target(ElementType.FIELD) //字段、枚举的常量 @Target(ElementType.METHOD) //方法 @Target(ElementType.PARAMETER) //方法参数 @Target(ElementType.CONSTRUCTOR) //构造函数 @Target(ElementType.LOCAL_VARIABLE)//局部变量 @Target(ElementType.ANNOTATION_TYPE)//注解 @Target(ElementType.PACKAGE) ///包
elementType には複数のアノテーションを含めることができ、クラス、メソッド、フィールドなどにアノテーションを付けることができます
1.3. @Document: アノテーションが javadoc に含まれることを示します
1.4. @Inherited: サブクラスが親クラスのアノテーションを継承できることを示します
以下はカスタム アノテーションの例です
2.定義
Java コード
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface HelloWorld { public String name() default ""; }
3. アノテーションの使用、テスト クラス
Java コード
public class SayHello { @HelloWorld(name = " 小明 ") public void sayHello(String name) { System.out.println(name + "say hello world!"); }//www.heatpress123.net }
4. アノテーションの解析
Java のリフレクション メカニズムが役立ちます。コードは次のとおりです:
Java コード
public class AnnTest { public void parseMethod(Class<?> clazz) { Object obj; try { // 通过默认构造方法创建一个新的对象 obj = clazz.getConstructor(new Class[] {}).newInstance( new Object[] {}); for (Method method : clazz.getDeclaredMethods()) { HelloWorld say = method.getAnnotation(HelloWorld.class); String name = ""; if (say != null) { name = say.name(); System.out.println(name); method.invoke(obj, name); } } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { AnnTest t = new AnnTest(); t.parseMethod(SayHello.class); } }
その他の Java カスタマイズアノテーションインターフェイス実装ソリューションに関連する記事については、PHP 中国語 Web サイトに注目してください。