簡介
AnnotationVisitor是用來訪問Annotation的,SignatureVisitor使用來訪問簽名的;
AnnotationVisitor
AnnotationVisitor訪問順序如下:
(visit | visitEnum| visitAnnotation | code visitArray )* visitEnd.
()*可以訪問多次,而visitEnd只能訪問一次;
- visit:訪問註解的基本值;
- visitEnum:訪問註解的枚舉類型值;
- visitAnnotation:訪問嵌套註解類型,也就是一個註解可能被其他註解所註釋;
- visitArray: 訪問註解的數組值;
- visitEnd:訪問結束通知;
SignatureVisitor
SignatureVisitor用來訪問泛型類型的,其訪問順序如下:
類簽名ClassSignature:( visitFormalTypeParameter visitClassBound?
visitInterfaceBound* )* (visitSuperclass visitInterface* )
方法簽名MethodSignature:( visitFormalTypeParameter visitClassBound?
visitInterfaceBound* )* ( visitParameterType* visitReturnType visitExceptionType* )
域簽名FieldSignature: visitBaseType | visitTypeVariable | visitArrayType | ( visitClassType visitTypeArgument* (visitInnerClassType visitTypeArgument* )* visitEnd ) )
- visitFormalTypeParameter(final String name):訪問正規類型參數;
- visitClassBound:訪問最後一個被訪問的正規類型參數的類界限;
- visitInterfaceBound:訪問最後一個被訪問的正規類型參數的接口界限;
- visitSuperclass:訪問該類型的超類;
- visitInterface:訪問該類所實現的接口;
- visitParameterType:訪問方法參數類型;
- visitReturnType:訪問方法返回值類型;
- visitExceptionType:訪問方法異常類型;
- visitBaseType:訪問基本類型的簽名;
- visitTypeVariable:訪問類型變量的簽名;
- visitArrayType:訪問一個數組類型的簽名;
- visitClassType:開始訪問類或者接口類型的簽名;
- visitInnerClassType:訪問內部類;
- visitTypeArgument:訪問最後被訪問類或者接口的無界限類型參數;
- visitTypeArgument(final char wildcard):訪問最後被訪問類或者內部類的類型參數;
- visitEnd:訪問結束通知
作者:技術蝸牛
鏈接:https://www.jianshu.com/p/f1940fc000e5
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
請問如何訪問AnnotationVisitor?類似於ClassVisitor這種
AnnotationVisitor裏面就幾個方法,你可以看下AnotationVisior.visitAnnotation方法