編程思想--第20章--注解

注解

注解(也被稱為元數(shù)據(jù))為我們?cè)诖a中添加信息提供了一種形式化的方法,使我們可以在稍后某個(gè)時(shí)刻非常方便的使用這些數(shù)據(jù)。

注解在一定程度上把元數(shù)據(jù)與源代碼文件結(jié)合在一起,而不是保存在外部文檔中這一大的趨勢(shì)之下所催生的。同時(shí),注解也是對(duì)來(lái)自像C#之類(lèi)的其他語(yǔ)言對(duì)Java造成的語(yǔ)言特性塔里所作出的一種回應(yīng)。

注解可以提供用來(lái)完整描述程序所需要的信息,而這些信息是無(wú)法用Java來(lái)表達(dá)的。注解可以使我們能夠以將由比編譯器來(lái)測(cè)試和驗(yàn)證的格式,存儲(chǔ)有關(guān)程序有關(guān)的額外信息。注解的優(yōu)點(diǎn):更加干凈易讀的代碼以及編譯器類(lèi)型檢查。

三種標(biāo)準(zhǔn)注解:@Override 重寫(xiě);@Deprecated : 發(fā)出警告;@SuppressWarnings 忽略警告

一、基本語(yǔ)法

注解的語(yǔ)法比較簡(jiǎn)單,除了@符號(hào)的使用外,它基本與java固有的語(yǔ)法一致。注解并不做任何事情,但是編譯器要確保在其結(jié)構(gòu)路徑上必須有注解的定義。

注解的定義看起來(lái)很像接口的定義,事實(shí)上,注解也會(huì)編譯成class文件。定義注解時(shí)需要一些 元注解,@Target用來(lái)定義注解用于什么地方,@Retctetion用來(lái)定義注解在哪一個(gè)級(jí)別可用,在源代碼中(Resource),類(lèi)(Class)或者運(yùn)行(Runtime)

沒(méi)有元素的注解稱為標(biāo)記注解。注解的元素開(kāi)起來(lái)就像接口的方法,唯一的區(qū)別是你可以為其指定默認(rèn)值。

java目前只內(nèi)置了三種標(biāo)準(zhǔn)注解,以及始四種元注解。元注解專(zhuān)職負(fù)責(zé)注解其他注解。

?

二、編寫(xiě)注解處理器

注解使用的過(guò)程中,很重要的一個(gè)部分就是創(chuàng)建與使用注解處理器。

注解可以使用的類(lèi)型:所有基本類(lèi)型,String,Class,enum,Annotation,以上類(lèi)型的數(shù)組。如果使用其它類(lèi)型,編譯器會(huì)報(bào)錯(cuò),也不允許使用任何包裝類(lèi)型。

元素不能有不確定的值,元素要么必須有默認(rèn)值,要么在使用注解時(shí)提供元素的值。

注解不支持繼承,不能使用關(guān)鍵字extends來(lái)繼承某個(gè)@interface。

三、使用apt處理注釋

注解工具apt是sun為了幫助注解的處理過(guò)程而提供的工具。apt被設(shè)計(jì)為操作java源文件,而不是編譯后的類(lèi)。

四、用觀察者模式用于apt?? ?

對(duì)一個(gè)注解進(jìn)行分析,我們?nèi)砸龃罅繌?fù)雜的工作,處理注解的真實(shí)過(guò)程可能會(huì)非常復(fù)雜。當(dāng)我們有更多的注解和更多的處理器時(shí),為了防止復(fù)雜性迅速攀升,mirrot API提供了對(duì)訪問(wèn)者設(shè)計(jì)模式的支持。

五、基于注解的單元測(cè)試

單元測(cè)試是對(duì)類(lèi)中的每個(gè)方法提供一個(gè)或朵兒測(cè)試的一種實(shí)踐,其目的是為了有規(guī)律地測(cè)試一個(gè)類(lèi)的各個(gè)部分是否具備正確的行為。在Java中,最著名的單元測(cè)試工具就是JUnit。

六、總結(jié)

注解引入Java提供了一種結(jié)構(gòu)化的,并且具有類(lèi)型檢查能力的新途徑,從而使得程序員能夠?yàn)榇a加入元數(shù)據(jù),而不會(huì)導(dǎo)致代碼雜亂且難以閱讀。使用注解能夠幫助我們避免編寫(xiě)累贅的部署描述文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容