註解的作用
註解是一些數據,在代碼中添加在稍後某個時刻可以方便使用,稍後某個時刻分爲源代碼(SOURCE)、類文件(CLASS)、運行時(RUNTIME),我對source、class、runtime具體的時刻不清楚,但是source早於class,class早於runtime是可以肯定的;
註解最早是用來提供程序無法用java來表達的或是以前必須依賴外部文件的解決方案。
註解運行
註解的處理或者說註解起作用要用註解處理器,一般是獲取這個類的CLASS,然後通過反射提供的方法來獲取註解信息,如getDeclaredMethods(),getAnnotation(Type.class)等;
java1.8用的是javac命令 ,以前(1.5)用apt命令;
比如1.8中
@SupportedAnnotationTypes(
"annotations.simplest.Simple")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class SimpleProcessor
extends AbstractProcessor {
其中@SupportedAnnotationTypes、@SupportedSourceVersion在1.5的老版中只是一個叫AnnotationProcessorFactory接口中的方法,老1.5還有一個AnnotationProcessor接口中的process方法,現在放在了AbstractProcessor 抽象類中。
通過命令可以解析註解類中的信息:
javac -processor annotations.simplest.SimpleProcessor SimpleTest.java
註解的神奇
如果在系統構建的過程中會自動創建一些新的源文件,會檢查新生成源文件中註解,然後將所有文件一同編譯。
當註解處理器生成一個新的源文件時,該文件件會在新一輪(round,Sun文檔中這樣稱呼它)的註解處理中接受檢查。該工具會一輪一輪地處理,直到不再有新的源文件產生爲止。然後它在編譯所有的源文件。
——引用java編程思想第四版,jdk1.5
Unit註解
Unit註解在java編程思想jdk1.8版本中有提到,大概是註解處理器的PLUS版
Unit註解寫的太狠了,暫時看不懂,可以連接到這裏看看