瞭解java註解,java註解
類似於下面這樣的就是註解
註解可以在類上,成員變數上,方法上等
假如有2個註解是這樣的:(其中的Author和Date)
那麼這2個註解的定義就是這樣的:
Author註解:
Date註解:
可以看到註解的定義和介面的定義比較類似,而Author註解中有name屬性,所以使用Author的時候比較要填寫name屬性值
如果想要註解有預設值,可以這樣:
這樣使用Author註解時age屬性值就可以不用填寫,一個註解有多個屬性值時使用時用逗號隔開
如果註解中只定義了1個屬性且名稱為value,那麼使用時名稱可省略,像這樣:
註解也是一種類型,既然可以定義,那麼也是可以擷取的,像這樣:
運行你會發現是會報錯的,難道是代碼錯了,其實並不是,是註解的保留原則沒有更改
再就要談到元註解了,元註解就是註解類型上的註解,先看一下註解@Override的元註解
其中@Target和@Retention就是元註解,其中@Target表示註解的應用範圍,@Retention表示註解的保留原則
這兩個註解可以根據java.lang.annotation介面去查閱
java.lang.annotation.RetentionPolicy
所以只需要將@Retention的值設定為RUNTIME就可以讀取註解了,它的預設值是CLASS
java.lang.annotation.ElementType
@Target的預設值應該是這所有的(這個我沒有嘗試啊)
看到這裡就應該知道怎麼解決剛才報錯的問題了
只需要在自訂註解上加上元註解@Retention就行了,當然,也可以設定一下註解@Target,就像這樣:
Author註解:
Date註解:
再運行就可以得到結果了
還有剛才提到的關於註解的繼承,也是使用元註解:@Inherited
註解預設不繼承,不過這繼承也是有限制的
@Inherited //表示註解是否能繼承, 只能作用在類上, 只對類的繼承有效, 對實現介面無效
註解可能用到的地方不多,不過瞭解註解可以讓我們更理解一些東西。比較springmvc中的註解等