更新時間:2020-06-08 16:29:45 來源:動力節點 瀏覽2411次
在應用代碼中
比如在Java我們經常會看到諸如 Override, Deprecated等,
在Android開發中,使用Dagger2這個注入框架,我們肯定會使用到 Inject, Provide, Component等
后來,人們為了統一說法,這樣的玩意,江湖中人稱之為注解(英文名:Annotation).
注解是代碼里的特殊標記,這些標記可以在編譯、類加載、運行時被讀取,并執行相應的處理。
通過使用注解,攻城獅可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充的信息。
簡而言之,注解用一個詞就可以描述注解,那就是元數據,即一種描述數據的數據.
擴展:可能有人會問,元數據,是神馬,這里繼續補充,
元數據,通俗一點,就是描述代碼間關系,或者代碼與其他資源(例如數據庫表)之間內在聯系的數據。
在簡單點理解,我們去銀行辦卡,填寫姓名,年齡,身份證號碼,電話等等,全部填寫完畢之后在提交給銀行的工作人員
那么,諸如姓名,年齡,身份證號碼,電話等等的這些,我們就可以稱之為元數據.
注解只提供了一種為程序元素(包、類、構造器、方法、成員變量、參數、局域變量)設置元數據的方法。
注解不能運行,它僅只有成員變量,沒有方法。
注解跟public、final等修飾符的地位一樣,都是程序元素的一部分,但是,注解不能作為一個程序元素使用。
關于注解,J2SE5.0版本在java.lang.annotation提供了四種元注解,專門注解其他的注解:
Documented–注解是否將包含在JavaDoc中
Retention–什么時候使用該注解
Target–注解用于什么地方
Inherited–是否允許子類繼承該注解
如何自定義注解?我們習慣了new Class,其實,注解一直都在,只是我們不曾看過
創建Annotation
我們模仿ButterKnife,寫一個BindView的注解玩一玩,于是乎,我們有了下面的代碼:
基本的用法
在這里,我們給自定義加了兩個方法,
接下來,我們自定義一個使用了該注解的JavaBean類,如下圖
使用自定義注解的類
那么,接下來問題來了,我該如何獲取這個自定義注解上的值???
這個時候,細心的同學可能發現,咦,你這個Student類上的自定義注解上的name以及age的順序和自定義上的注解順序不一致,這樣不會有影響嗎?嗯,是的,沒影響。言歸正傳,獲取自定義注解上的值我們可以通過反射去做,對反射不是很了解的話,可以查看我的這片博客關于反射快速理解,
在這里,我們假定外部傳來一個Student對象,通過這個對象暴力反射獲取字段,根據其字段獲取注解上的值,我們將獲取到的值設置給上面的Student類上,然后通過打印控制臺顯示結果,
第一步,獲取注解上的值,先上代碼圖
獲取使用注解類上的注解值
1;通過暴力反射獲取成員變量
2;細心的同學可能會發現,使用了自定義注解的成員變量是name字段,那么通過該字段獲取注解的字節碼
3;通過第2個步驟,即可獲取到具體的值
4;在反射里面說到,給類里面的變量賦值,通過set方法
第二步:測試以上代碼,能否獲取注解上的值,先上圖
測試獲取自定義注解的值
基本上,注解的簡單介紹和使用,就是以上內容,如果需要深入了解,可以自己查閱資料。
以上就是動力節點java培訓機構的小編針對“Java怎么注釋?有什么用”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習