注解
注解語法
public @interface TestAnnotation {
}//創建一個名為TestAnnotation的注解
注解的定義
@TestAnnotation //注釋通過 @interface 關鍵字進行定義
public class Test {
}
原注解
元注解也是一張標簽,但是它是一張特殊的標簽,它的作用和目 的就是給其他普通的標簽進行解釋說明的
元標簽有 :
@Retention
@Documented
@Target
@Inherited
@Repeatable五種
@Retention
應用到一個注解上時,它解釋說明了這個注解的存活時間
取值:
@Retention(RetentionPolicy.SOURCE )//注解只在原始碼階段保留,編譯時丟棄
(RetentionPolicy.CLASS )//注解只保留到.class階段,但jvm加載class時丟棄
@Retention(RetentionPolicy.RUNTIME )//注解不僅保留到class編譯檔案種,jvm加載class仍保留
生命周期:SOURCE<CLASS <RUNTIME
//例子
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
}
@Documente
作用是能夠將注解種的元素包含到javadoc中去
匯出javadoc防止中文亂碼需要加上
-encoding UTF-8 -charset UTF-8
@Targe
是指定注解運用的地方
取值:
@Target(ElementType.ANNOTATION_TYPE)//給一個注解進行注
@Target(ElementType.CONSTRUCTOR )//給構造方法進行注解
@Target(ElementType.FIELD )//給屬性進行注解
@Target(ElementType.LOCAL_VARIABLE)//給區域變數進行注解
@Target(ElementType.METHOD)//給方法進行注解
@Target(ElementType.PACKAGE )//給一個包進行注解
@Target(ElementType.PARAMETER )//給一個方法內的引數進行注
@Target(ElementType.TYPE )//給一個型別進行注解,比如類、介面、列舉
//例子
@Target(ElementType.CONSTRUCTOR)
public @interface TestAnnotation {
}
@Inherited
繼承,不是注解繼承,使用了Inherited之后子類繼承父類的時候,如果子類沒有注解,那么父類的注解被繼承
@Repeatable
可重復 Java 1.8 才加進來的
@interface Persons {
Person[] value();
}
@Repeatable(Persons.class)
@interface Person{
String role default "";
}
@Person(role="artist")
@Person(role="coder")
@Person(role="PM")
public class SuperMan{
}
注解的屬性
注解的屬性也叫做成員變數,注解只有成員變數,沒有方法
Java 預置的注解
@Deprecated 用來標記過時的元素
@Override 提示子類要復寫父類中被 @Override 修飾的方法
@SuppressWarnings阻止警告的意思
取值:
@SuppressWarnings({"unused"})//不做警告檢查
@SafeVarargs引數安全型別注解
目的是提醒開發者不要用引數做一些不安全的操作,它的存在會阻止編譯器產生 unchecked 這樣的警告,在 Java 1.7 的版本中加入的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/171938.html
標籤:其他
