類似於下面這樣的就是注解
注解可以在類上,成員變量上,方法上等
假如有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中的注解等