課程
/后端開發(fā)
/Java
/全面解析Java注解
自定義注解中的成員變量為什么后面要加括號(hào)?
2017-12-19
源自:全面解析Java注解 4-3
正在回答
一樓這位仁兄有的地方說的有點(diǎn)問題:任何注解本身都是接口 ,只不過是隱式繼承了Annotation這個(gè)接口而已
具體可看
然后我們發(fā)現(xiàn): Annotation 是jdk1.5 新增的特性,然而接口定義方法體是jdk1.8才有的特性,而且必須顯式定義為default 修飾的普通方法 或者 靜態(tài)方法。
所以,無論任何注解都是接口,
任何接口在jdk1.8前都不允許存在方法體
舉個(gè)例子, Spring的autowired注解
我們一路跟下去就會(huì)看到這個(gè)注解的處理方法
org\springframework\beans\factory\annotation\QualifierAnnotationAutowireCandidateResolver.java
看到泛型<A extends Annotation>也就側(cè)面證明了注解確實(shí)是接口;
然后我們?cè)倏匆幌滤恼{(diào)用,也確實(shí)是方法的調(diào)用方式;
所以,總結(jié)一下:
????既然我們可以認(rèn)為接口是一種非常特殊的抽象類,只不過是不允許存在方法體而已(jdk1.8之前)
????那么我們?yōu)槭裁床话炎⒔庹J(rèn)為一種特殊的接口呢,只不過方法定義之后必須默認(rèn)返回參數(shù)呢
????over
qq_啊啊啊洪湖水我的淚_0
qq_與贈(zèng)_03193390 回復(fù) qq_啊啊啊洪湖水我的淚_0
瀟湘魅
是不是說只要是自定義的注解,成員都是帶括號(hào)的,不是成員變量嗎?還是成員方法??
自定義注解annotation的類型使用關(guān)鍵字@interface而不是interface。它繼承了java.lang.annotition.Annotition接口,并非申明了一個(gè)interface。同理也不是一個(gè)普通類。
Annotation類型、方法定義是獨(dú)特的、受限制的。Annotation類型的方法必須申明為無參數(shù)、無異常拋出的。這些方法定義了Annotation的成員:方法名稱為了成員名,而方法返回值稱為了成員的類型。
舉報(bào)
注解Java中的常用技能,通過實(shí)戰(zhàn)演示注解在實(shí)際項(xiàng)目中的應(yīng)用
1 回答自定義注解中有沒有接口
4 回答定義注解時(shí)的要求,為什么這么要求?語(yǔ)法規(guī)定的?還是有什么原理的考量?
2 回答為什么沒有自動(dòng)加注解?
2 回答是不是使用注解的成員變量,使用一個(gè)的時(shí)候,默認(rèn)的為value
2 回答關(guān)于自定義注解類型聲明
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-02-09
一樓這位仁兄有的地方說的有點(diǎn)問題:任何注解本身都是接口 ,只不過是隱式繼承了Annotation這個(gè)接口而已
具體可看
然后我們發(fā)現(xiàn): Annotation 是jdk1.5 新增的特性,然而接口定義方法體是jdk1.8才有的特性,而且必須顯式定義為default 修飾的普通方法 或者 靜態(tài)方法。
所以,無論任何注解都是接口,
任何接口在jdk1.8前都不允許存在方法體
舉個(gè)例子, Spring的autowired注解
我們一路跟下去就會(huì)看到這個(gè)注解的處理方法
org\springframework\beans\factory\annotation\QualifierAnnotationAutowireCandidateResolver.java
看到泛型<A extends Annotation>也就側(cè)面證明了注解確實(shí)是接口;
然后我們?cè)倏匆幌滤恼{(diào)用,也確實(shí)是方法的調(diào)用方式;
所以,總結(jié)一下:
????既然我們可以認(rèn)為接口是一種非常特殊的抽象類,只不過是不允許存在方法體而已(jdk1.8之前)
????那么我們?yōu)槭裁床话炎⒔庹J(rèn)為一種特殊的接口呢,只不過方法定義之后必須默認(rèn)返回參數(shù)呢
????over
2017-12-21
是不是說只要是自定義的注解,成員都是帶括號(hào)的,不是成員變量嗎?還是成員方法??
2017-12-20
自定義注解annotation的類型使用關(guān)鍵字@interface而不是interface。它繼承了java.lang.annotition.Annotition接口,并非申明了一個(gè)interface。同理也不是一個(gè)普通類。
Annotation類型、方法定義是獨(dú)特的、受限制的。Annotation類型的方法必須申明為無參數(shù)、無異常拋出的。這些方法定義了Annotation的成員:方法名稱為了成員名,而方法返回值稱為了成員的類型。