當(dāng)我們編寫了自定義的annotation我們需要在程序中去訪問(wèn)這些annotation。讀取annotation的方法大概分為以下3種:
常規(guī)工具:是一些可以分析源代碼的工具,并且做一些相關(guān)處理。比如編譯器和文檔產(chǎn)生器都屬于這一類。常規(guī)工具不load 被注釋的類和注釋接口到虛擬機(jī)中。只是在源代碼級(jí)別進(jìn)行分析和處理。
特定工具:也是一些可以分析源代碼的工具,但是需要裝載注釋接口到虛擬機(jī)中,比如stub產(chǎn)生器。
反省:是一些可以在運(yùn)行時(shí)獲取自己的注釋的程序,這些注釋的retentionpolicy是runtime。反省需要裝載被注釋的類和注釋接口到虛擬機(jī)中。
常規(guī)工具:新的Doclet API(com.sun.javadoc), APT等
特定工具:JSR-269((Pluggable Annotation Processing API), 一些code generation framework像ASM(AnnotationVisistor), javaassist(AnnotationsAttribute), BECL等都可以在這個(gè)級(jí)別獲取注釋。
反省:java反射和AOP.