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,得到的就是类的全类名(包名)。
获取所在的包名:elementUtils.getPackageOf(classElement).getQualifiedName().toString();
———————————————— 本文为CSDN博主「lidongxiu0714」的原创文章 原文链接:blog.csdn.net/u010126792/…