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