亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

注解的原理是什么

課程沒有說明怎么實現的

正在回答

2 回答

你是說為什么注解能做到這個吧。

官方定義的,類似于在代碼中打一個標記,有分編譯時和運行時。

對注解進行解析的代碼在編譯器和運行時中,簡單說就是編譯器和運行時發現類似的@xxx就看看是不是有對應的注解類型,有就對其進行相應的處理。

至于如何去找這個注解標記,那就去看看編譯器和jvm的源碼了,一般學習不用糾結。

就好比定義一個整型變量就是用int,這就是語法!

如果第三方的話,一般是屬于運行時注解,通過反射調用的。即通過反射調用某個方法,加載某個類等等操作的時候,獲取注解信息(反射api有提供方法獲?。缓筢槍ο鄳淖⒔膺M行處理。

7 回復 有任何疑惑可以回復我~
#1

花絕世

最后針對相應的注解進行處理,有很多,看你業務邏輯。 如:@Autowired注解 public class Xx{ @Autowired private Yy yy; } 通過反射實例化Xx類的對象時,檢測到有@Autowired注解注解的方法,你就可以創建一個Yy類的對象,賦值給yy。
2016-06-18 回復 有任何疑惑可以回復我~
#2

perpetual_sunrise 提問者

非常感謝!
2016-06-18 回復 有任何疑惑可以回復我~

- @Retention【關于注解的生命周期RetentionPolicy】

? ? - .SOURCE,只保留在源文件層面,當.java被編譯成.class的時候,此注解被丟棄

? ? - .CLASS,(默認值)只保留在class文件,不會加載到jvm中。當jvm加載class文件的時候,此注解被丟棄

? ? - .RUNTIME jvm加載被編譯后的class文件后,此注解依然有效

- @Documented【javadoc 文檔相關】

- @Target【指明了此注解用的范圍,是個ElementType】

? ? - TYPE :class,interface(當然也包括annotation 類型)

? ? - FIELD:屬性,包括一些枚舉常量

? ? - METHOD:方法

? ? - PARAMETER:方法內參數

? ? - CONSTRUSTOR:構造方法

? ? - LOCAL_VARIABLE:局部變量

? ? - ANNOTATION_TYPE:注解類型聲明

? ? - PACKAGE:包

? ? - TYPE_PARAMETER:參數類型

? ? - TYPE_USE

- @Inherited

? ? - 在超類A的注解test被@Inherited注解后,該注解(test)被A'注解(@test),A'的子類就繼承了超類A的注解。(前提是子類沒有被任何注解應用)


- @Repeatable【多個屬性值的注解】

? ? - @Repeatable后面括號的類相當于一個容器注解


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

注解的原理是什么

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號