编译时注解学习一之 Element元素

2023-06-29  本文已影响0人  Bfmall

学习目录:
编译时注解学习一之 Element元素
编译时注解学习二之 注解处理器初探AbstractProcessor
编译时注解学习三之 注解处理器AbstractProcessor工具和Element属性简述
编译期注解学习四 简单的view注入框架
编译期注解学习五 - ElementKind,TypeKind,不同Element类型判断
编译期注解学习六- 生成java文件javapoet
编译期注解学习七-如何进行调试
编译时注解学习八 -模板文件读取

请参考原文链接:https://blog.csdn.net/u010126792/article/details/95614328

学习java基础之注解,掌握了注解的基本用法。使用系统或者大神写的框架库提供给我们注解,可以省略好多配置,特别是java Spring开发中注解更是多的眼花缭乱。最近需要用到编译时注解,所以就对AbstractProcessor进行深入的学习,首先对javax.lang.model.element进行学习。

Element 是一个接口,它只在编译期存在和Type有区别,表示程序的一个元素,可以是package,class,interface,method,成员变量,函数参数,泛型类型等。
它的子类包括ExecutableElement, PackageElement, Parameterizable, QualifiedNameable, TypeElement, TypeParameterElement, VariableElement。

Element的子类介绍:

ExecutableElement:表示类或者接口中的方法,构造函数或者初始化器。
PackageElement :表示包程序元素
TypeELement:表示一个类或者接口元素
TypeParameterElement:表示类,接口,方法的泛型类型例如T。
VariableElement:表示字段,枚举常量,方法或者构造函数参数,局部变量,资源变量或者异常参数。
Element只在编译期可见,通过Element可以获取什么信息呢,如何获取呢。下面是jdk中对Element的说明:

asType() 返回TypeMirror,TypeMirror是元素的类型信息,包括包名,类(或方法,或参数)名/类型。TypeMirror的子类有ArrayType, DeclaredType, DisjunctiveType, ErrorType, ExecutableType, NoType, NullType, PrimitiveType, ReferenceType, TypeVariable, WildcardType ,getKind可以获取类型。

equals(Object obj) 比较两个Element利用equals方法。

getAnnotation(Class annotationType) 传入注解可以获取该元素上的所有注解。

getAnnotationMirrors() 获该元素上的注解类型。

getEnclosedElements() 获取该元素上的直接子元素,类似一个类中有VariableElement。

getEnclosingElement() 获取该元素的父元素,如果是PackageElement则返回null,如果是TypeElement则返回PackageElement,如果是TypeParameterElement则返回泛型Element

getKind() 返回值为ElementKind,通过ElementKind可以知道是那种element,具体就是Element的那些子类。

getModifiers() 获取修饰该元素的访问修饰符,public,private。

getSimpleName() 获取元素名,不带包名,如果是变量,获取的就是变量名,如果是定义了int age,获取到的name就是age。如果是TypeElement返回的就是类名。

getQualifiedName():获取类的全限定名,Element没有这个方法它的子类有,例如TypeElement,得到的就是类的全类名(包名)。

获取所在的包名:
Elements.getPackageOf(enclosingElement).asType().toString()
————————————————
版权声明:本文为CSDN博主「lidongxiu0714」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010126792/article/details/95614328

上一篇下一篇

猜你喜欢

热点阅读