當我們編寫了自定義的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.