Java 註解(Annotation)
什麼是註解(Annotation)
註解是 Java 5 的一個新特性。註解是插入你程式碼中的一種註釋或者說是一種後設資料(meta data)。這些註解資訊可以在編譯期使用預編譯工具進行處理(pre-compiler tools),也可以在執行期使用 Java 反射機制進行處理。(來自極客學院)
註解作用
- 生成文件。常用的有@see @param @return 等
- 跟蹤程式碼依賴性,實現替代配置檔案功能。如spring註解配置
- 在編譯時進行格式檢查。如@override 放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出。
元註解
四個元註解:@Target, @Retention, @Documented, @Inherited
@Target
表示註解可以用於什麼地方, ElementType 列舉類定義了使用範圍如下。
TYPE //類、介面或enum宣告
FIELD //域(屬性)宣告
METHOD //方法宣告
PARAMETER //引數宣告
CONSTRUCTOR //構造方法宣告
LOCAL_VARIABLE //區域性變數宣告
ANNOTATION_TYPE //註釋型別宣告
PACKAGE //包宣告
TYPE_PARAMETER //型別引數宣告,下面這兩個是1.8新增
TYPE_USE //型別使宣告
@Retention
表示在什麼級別儲存該註解資訊。可選的引數值在列舉型別 RetentionPolicy 中,如下所示。
RetentionPolicy.SOURCE //註解將被編譯器丟棄
RetentionPolicy.CLASS //註解記錄在class檔案中,但在VM執行期不會被保留,這個是預設行為
RetentionPolicy.RUNTIME //註解記錄在class檔案,並且VM將在執行期也保留註釋,因此可以通過反射機制讀取註解的資訊。
@Documented
將此註解包含在Javadoc中
@Inherited
使父類的註解可以繼承至子類中,注意註解繼承只針對class級別註解有效
自定義註解demo
/***********************類註解StudentInfo****/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface StudentInfo {
String value() default "";
}
/*********************屬性註解StudentInfo****/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface StudentName {
String value() default "";
}
/******************************註解使用****/
@StudentInfo("studentInfo")
public class Student {
@StudentName("lily")
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public static void main(String[] args){
if(Student.class.isAnnotationPresent(StudentInfo.class)){
System.out.println(Student.class.getAnnotation(StudentInfo.class).value());
}
Field[] fields = Student.class.getDeclaredFields();
for(Field field : fields){
if(field.isAnnotationPresent(StudentName.class)){
StudentName studentName = field.getAnnotation(StudentName.class);
System.out.println(studentName.value());
}
}
}
}
相關文章
- Java —— 註解(Annotation)Java
- Java Annotation 註解Java
- java-Annotation註解Java
- Java之註解(Annotation)Java
- Java 註解Annotation研究Java
- Java註解(Annotation)詳解Java
- 【Java.Core】註解 - AnnotationJava
- Java進階(一)Annotation(註解)Java
- Java註解(Annotation):請不要小看我!Java
- Java 註解 (Annotation)淺入深出Java
- 元註解——java.lang.annotation.Target(1.8)Java
- 關於Java註解(annotation)的簡單理解Java
- Java學習之註解Annotation實現原理Java
- JAVA ANNOTATION詳解Java
- Spring(三)——註解方式(Annotation)Spring
- 【framework】spring-註解(annotation)FrameworkSpring
- Android 註解系列之Annotation(二)Android
- java annotationJava
- Java建立AnnotationJava
- java 的annotationJava
- Java自定義Annotation,通過反射解析AnnotationJava反射
- java反射——反射AnnotationJava反射
- hibernate annotation註解方式來處理對映關係
- java註解Java
- 註解 javaJava
- 「Android」Android開發你需要知道的註解(Annotation)Android
- Java註解詳解Java
- Java 註解詳解Java
- JAVA-註解(2)-自定義註解及反射註解Java反射
- 註解專題(一)Java元註解,內建註解Java
- Java中的註解-自定義註解Java
- JAVA 註解 AnnontationJava
- Java註解AnnotatonJava
- Java反射-註解Java反射
- Java™ 教程(註解)Java
- Java(5)註解Java
- java註解,反射Java反射
- Java--註解Java