天天看點

注解

1.什麼是注解

注解是一種代碼級别的說明。他是jdk1.5以後引入的一個特性,與類,接口,枚舉在同一個層次

2.作用

注釋是給程式員提供相應的資訊 注解是給計算機提(編譯器,虛拟機,記憶體)供相應的資訊

例如:

檢查編譯:通過代碼裡辨別注解,讓編譯器實作基本的編譯檢查,Override

代碼分析:通過代碼裡辨別注解,讓代碼進行分析,進而達到取代xml的目次

編寫文檔:通過代碼裡辨別注解,輔助生成幫助文檔的内容

3.jdk提供的注解有哪些

@Deprecated表識被修飾的方法已經過時,過時的方法不建議使用,但仍可以使用 一别被标記過時的方法都存在缺陷 1安全問題 2新的api取代

注解

@Override jdk5.0表示複寫父類方法 jdk6.0還可以表示實作接口的方法

@SuppreWarnings表示抑制警告 被修飾的類或者方法如果存在編譯警告,将被編譯器忽略

deprecation 忽略過時

rawtypes 忽略類型不安全(泛型)

unused 忽略不适用

unchecked 忽略安全檢查

null 忽略控制

all 忽略所有

注解

4.自己定義注解

5.使用自己定義的注解br/>屬性使用,在目标對象(類名,構造方法,方法,字段)直接添加注解,以@開頭

格式:@注解名稱br/>@注解名稱(屬性名=值,屬性名=值,。。。)

屬性名:br/>1.如果屬性名為value,且隻有一個屬性時,屬性名可以省略

标準寫法:@Anno_2(value="dzd")

省略:@Anno_2("dzd")br/>2.如果有多個屬性時,value不能省略

@Anno_2(value="dzd",username="jack")

屬性值:br/>1.如果屬性的類型是數組,值需要使用{值1,值2,值3,}

@Anno_2(hobby={"dzd","das","daf"})

2.如果屬性的類型是數組,隻有一個值時,{}可省略br/>@Anno_2(hobby="dzd")

預設值:如果有預設值得屬性可選,如果沒有預設值的屬性為必填

注意同一個注解,隻能在同一個目标對象上使用一次

6.對自己定義的注解進行解析

如果給類,方法等添加注解,如果獲得注解上設定的資料,那麼我們就必須對注解進行解析,jdk提供了java.lang.reflect.annotatedElement接口允許在運作時通過放射獲得注解

當運作上面程式後,我們希望輸出結果是true,但實際上是false,TestAnno類上有@Anno_1,但運作後不能獲得,因為每一個自定義注解,需要jdk提供的元注解(用于修飾注解的注解)進行修飾,才可以真正的使用

6.修飾注解的注解--元注解

定義:用于修飾自定義注解的jdk提供的注解

jdk提供4中元注解

@Retention 用于确定被修飾的自定義注解的生命周期

RetentionPolicy.SOURCE 被修飾的注解隻能夠存在源碼中,位元組碼中沒有,用途提供給編譯器使用

RetentionPolicy.CLASS 被修飾的注解隻能存在源碼和位元組碼中,運作時記憶體沒有,用途:java虛拟機使用br/>RetentionPolicy.RUNTIME被修飾的注解存在于源碼,位元組碼,記憶體,用途取代xml

@Target用于确定被修飾的自定義注解使用位置

ElementType.TYPE 修飾類,接口

ElementType.CONSTRUCTOR修飾構造方法

ElementType.METHOD修飾方法

ElementType.FIELD修飾字段

輸出結果為true

繼續閱讀