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