2020-10-21
Java培訓
好程序員Java培訓分享注解與反射原理說明,首先注解若想發揮更大作用,還需借助反射機制之力。通過反射,可以取得一個方法上聲明的注解的全部內容。
一般有兩種需求:
1、取得方法中全部的注解,通過調用getAnnotations來實現。
2、判斷操作是否是指定注解,通過調用getAnnotation來實現。
下面從源碼角度來說明怎樣獲取這些注解信息。
源碼導讀——取得方法中全部的注解
public class AccessibleObject implements AnnotatedElement {
...
//取得全部Annotation
public Annotation[] getAnnotations() {
return getDeclaredAnnotations();
}
...
}
public final class Method extends Executable {
...
public Annotation[] getDeclaredAnnotations() {
//針對Method類,需要調用父類的getDeclaredAnnotations方法
return super.getDeclaredAnnotations();
}
...
}
//Method的父類Executable的getDeclaredAnnotations實現全部注解信息的獲取
public abstract class Executable extends AccessibleObject
implements Member, GenericDeclaration {
...
public Annotation[] getDeclaredAnnotations() {
return AnnotationParser.toArray(declaredAnnotations());
}
...
}
源碼導讀——判斷操作是否是指定注解
public final class Method extends Executable {
...
////取得指定Annotation
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
return super.getAnnotation(annotationClass);
}
...
}
public abstract class Executable extends AccessibleObject
implements Member, GenericDeclaration {
...
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
Objects.requireNonNull(annotationClass);
//獲得指定注解類的信息
return annotationClass.cast(declaredAnnotations().get(annotationClass));
}
...
}
以上就是關于好程序員Java培訓之注解與反射原理說明的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值。
好程序員Java培訓官網:http://bloohash.com/javaEE_class.shtml
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號