Java1.5引入了注解,注解作為程序的元數據嵌入到程序中。注解可以被一些解析工具或者編譯工具進行解析。我們也可以聲明注解在編譯過程或者執行時產生作用。
創建Java自定義注解:
package com.click369; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Target(ElementType.METHOD) @Inherited @Retention(RetentionPolicy.RUNTIME) public @interface MethodInfo { String author() default "author"; String date(); int version() default 1; String comments(); }
1. 注解方法不能帶有參數。
2.注解方法返回值類型限定為:基本類型、String、Enums、Annotation或者這些類型的數組。
3.注解方法可以有默認值。
4.注解本身能夠包含元注解,元注解被用來注解其他注解。
四種類型的元注解:
1.@Documented----指明擁有這個注解的元素可以被javadoc此類的工具文檔化。這種類型應該用於注解那些影響客戶使用帶注釋的元素聲明的類型。
如果一種聲明使用Documented進行注解,這種類型的注解被作為被標注的程序成員的公共API。
2.@Target----指明該類型的注解可以注解的程序元素的范圍。該元注解的取值可以為TYPE,METHOD,CONSTRUCTOR,FIELD等。如果Target元注
解沒有出現,那么定義的注解可以應用於程序的任何元素。
3.@Inherited----指明該注解類型被自動繼承。如果用戶在當前類中查詢這個元注解類型並且當前類的聲明中不包含這個元注解類型,那么也將自動查
詢當前類的父類是否存在Inherited元注解,這個動作將被重復執行直到這個標注類型被找到,或者是查詢到頂層的父類。
4.@Retention----指明了該注解被保留的時間長短。RetentionPolicy取值為SOURCE、CLASS、RUNTIME。
Java內建注解:
1.@Override----當我們想要復寫父類的方法時,我們需要使用注解去告訴編譯器我們想要復寫這個方法。這樣一來當父類中的方法移除或者發生更改時編譯器將提示錯誤信息。
2.@Deprecated----當我們希望編譯器知道某一個方法不建議使用時,我們應該使用這個注解。java在javadoc中推薦使用該注解,我們應該提供為什么該方法不推薦使用以及替代的方法。
3.@SuppressWarnings----這個僅僅是告訴編譯器忽略特定的警告信息,例如在泛型中使用原生數據類型。他的保留策略是SOURCE並且被編譯器丟棄。