当我们编写了自定义的annotation我们需要在程序中去访问这些annotation。读取annotation的方法大概分为以下3种:
常规工具:是一些可以分析源代码的工具,并且做一些相关处理。比如编译器和文档产生器都属于这一类。常规工具不load 被注释的类和注释接口到虚拟机中。只是在源代码级别进行分析和处理。
特定工具:也是一些可以分析源代码的工具,但是需要装载注释接口到虚拟机中,比如stub产生器。
反省:是一些可以在运行时获取自己的注释的程序,这些注释的retentionpolicy是runtime。反省需要装载被注释的类和注释接口到虚拟机中。
常规工具:新的Doclet API(com.sun.javadoc), APT等
特定工具:JSR-269((Pluggable Annotation Processing API), 一些code generation framework像ASM(AnnotationVisistor), javaassist(AnnotationsAttribute), BECL等都可以在这个级别获取注释。
反省:java反射和AOP.