這篇文章主要介紹“Java注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)是什么”,在日常操作中,相信很多人在Java注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為孝南企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),孝南網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
XML作為配置文件受到了大部分程序員的喜愛(ài),但也有人會(huì)偏愛(ài)使用注解,其實(shí)個(gè)人覺(jué)得選擇什么并不是重點(diǎn),重點(diǎn)是要了解每一個(gè)技術(shù)誕生的本質(zhì);XML作為配置文件和代碼是“松耦合”的代碼描述,但是當(dāng)XML配置文件過(guò)多時(shí)難以管理,同時(shí)IDE無(wú)法對(duì)XML配置文件的正確性進(jìn)行校驗(yàn),增加測(cè)試難度;而注解則是“緊耦合”的代碼描述,它的目的是為了讓?xiě)?yīng)用更易于擴(kuò)展的同時(shí)做到“零”配置。
一、什么是注解(Annotation)
注解即標(biāo)注,是代碼中的元數(shù)據(jù)(元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)),通過(guò)使用注解使得程序開(kāi)發(fā)人員可以在不改變?cè)羞壿嫷那闆r下,在源文件中嵌入一些補(bǔ)充信息。請(qǐng)看以下代碼片段:
對(duì)于初學(xué)者而言,其實(shí)經(jīng)常會(huì)看到類(lèi)似代碼,心里會(huì)想@Override是什么鬼?其實(shí)它就是注解,在toString()方法上加入@Override,表示該注解下面的toString()方法必須重構(gòu)父類(lèi)方法。
看到這里我想有人就會(huì)認(rèn)為接下來(lái)我會(huì)和大家介紹各種各樣的注解了?!我偏不!
二、注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)
注解是Java中一種特殊的類(lèi)型,接下來(lái)我們來(lái)看一下如何設(shè)計(jì)一個(gè)注解類(lèi)型。
1、語(yǔ)法標(biāo)準(zhǔn):
public @interface 注解類(lèi)型名稱(chēng) { [ 數(shù)據(jù)類(lèi)型 變量名 () [ default 初始值 ]; ] } |
注:
1)"[ ]"中的內(nèi)容可有可無(wú),如果注解內(nèi)部為空,則表示當(dāng)前注解為標(biāo)識(shí)注解。
2)注解中智能包含變量,不能包含方法。
3)注解是代碼里的特殊標(biāo)記,不可以單獨(dú)使用,需要配合類(lèi)或接口一起使用。
4)注解類(lèi)型可以被用來(lái)為程序元素設(shè)置元數(shù)據(jù)(程序元素:類(lèi)、方法、成員變量等)。
2、案例:設(shè)計(jì)注解類(lèi)型Testable,由該注解標(biāo)識(shí)的方法為可測(cè)試方法。該注解內(nèi)部為空,表示該注解為標(biāo)識(shí)注解。
public @interface Testable { } |
public class Test { @Testable public void info() { System.out.println(“我是info方法”); } public void info1() { System.out.println(“我是info1方法”); } } |
該類(lèi)中加入@Testable注解,表示info方法為可被執(zhí)行到的方法,僅僅是描述該方法是可被執(zhí)行的方法而已,并不會(huì)有任何動(dòng)態(tài)交互能力,如果想要達(dá)成該注解的作用必須要編寫(xiě)配套的Java應(yīng)用程序,具體代碼可參考如下代碼。大家可以思考,如果想要解析一個(gè)類(lèi)的內(nèi)部結(jié)構(gòu),我們可以通過(guò)什么技術(shù)來(lái)實(shí)現(xiàn)呢?答案是:反射機(jī)制(接下來(lái)這一段有關(guān)于反射機(jī)制的相關(guān)內(nèi)容不清楚的朋友們,按照下面代碼進(jìn)行調(diào)試,具體反射機(jī)制的相關(guān)知識(shí)稍后會(huì)發(fā)布)。 在java.lang.reflect包中常見(jiàn)的具有反射功能的工具類(lèi):Method(方法類(lèi))、Field(字段類(lèi))、Constructor(構(gòu)造方法類(lèi))等。以上這些工具類(lèi)擴(kuò)充了讀取運(yùn)行時(shí)注解的能力,即實(shí)現(xiàn)java.lang.annotation.AnnotatedElement接口;該接口是所有程序元素的父接口,該接口中提供了用于獲取注解信息的相關(guān)方法。
|
代碼參考:解析Test類(lèi),并執(zhí)行帶有@Testable標(biāo)識(shí)的方法。 import java.lang.reflect.Method; public class UseTest { public static void main(String[] args)throws Exception { Class c=Class.forName(“Test”); Object o=c.newInstance(); Method[] me=c.getDeclaredMethods(); for(Method temp:me) { if(temp.isAnnotationPresent(Testable.class)) temp.invoke(o,new Object[0]); } } } 大家可以運(yùn)行程序看一下效果 |
到此,關(guān)于“Java注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
當(dāng)前名稱(chēng):Java注解類(lèi)型的語(yǔ)法標(biāo)準(zhǔn)是什么
當(dāng)前地址:http://chinadenli.net/article0/iecgio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、電子商務(wù)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)