亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

自定義注解中的成員變量為什么后面要加括號?

自定義注解中的成員變量為什么后面要加括號?

正在回答

3 回答

一樓這位仁兄有的地方說的有點問題:任何注解本身都是接口 ,只不過是隱式繼承了Annotation這個接口而已

具體可看

http://img1.sycdn.imooc.com//5a7d139d00013fcf08730387.jpg


然后我們發現: Annotation 是jdk1.5 新增的特性,然而接口定義方法體是jdk1.8才有的特性,而且必須顯式定義為default 修飾的普通方法 或者 靜態方法。

所以,無論任何注解都是接口,

任何接口在jdk1.8前都不允許存在方法體

舉個例子, Spring的autowired注解

http://img1.sycdn.imooc.com//5a7d17d10001485d09710248.jpg

我們一路跟下去就會看到這個注解的處理方法

org\springframework\beans\factory\annotation\QualifierAnnotationAutowireCandidateResolver.java

http://img1.sycdn.imooc.com//5a7d3c91000113d409560390.jpg

看到泛型<A extends Annotation>也就側面證明了注解確實是接口;

然后我們再看一下他的調用,也確實是方法的調用方式;

所以,總結一下:

????既然我們可以認為接口是一種非常特殊的抽象類,只不過是不允許存在方法體而已(jdk1.8之前)

????那么我們為什么不把注解認為一種特殊的接口呢,只不過方法定義之后必須默認返回參數呢


????over


2 回復 有任何疑惑可以回復我~
#1

qq_啊啊啊洪湖水我的淚_0

說錯了一點: 那么我們為什么不把注解認為一種特殊的接口呢,只不過方法定義之后可以默認返回參數呢
2018-02-13 回復 有任何疑惑可以回復我~
#2

qq_與贈_03193390 回復 qq_啊啊啊洪湖水我的淚_0

大哥,你對一個小白扯這么多有用嗎?是不是接口不是那么重要吧,直接告訴他這就是自定義注解的規范不就行了,何必這么糾結呢?
2018-04-01 回復 有任何疑惑可以回復我~
#3

瀟湘魅

來看這個視頻,就是為了找這個答案!沒想到竟然有如此優秀的回答!非常感謝
2018-09-21 回復 有任何疑惑可以回復我~
#4

瀟湘魅

雖然我完全不理解你在說什么
2018-09-21 回復 有任何疑惑可以回復我~
#5

瀟湘魅

又仔細去看了下文檔,懂了 3Q
2018-09-21 回復 有任何疑惑可以回復我~
查看2條回復

是不是說只要是自定義的注解,成員都是帶括號的,不是成員變量嗎?還是成員方法??


0 回復 有任何疑惑可以回復我~

自定義注解annotation的類型使用關鍵字@interface而不是interface。它繼承了java.lang.annotition.Annotition接口,并非申明了一個interface。同理也不是一個普通類。

Annotation類型、方法定義是獨特的、受限制的。Annotation類型的方法必須申明為無參數、無異常拋出的。這些方法定義了Annotation的成員:方法名稱為了成員名,而方法返回值稱為了成員的類型。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

自定義注解中的成員變量為什么后面要加括號?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號