美文网首页注解
编译时注解学习一之 Element元素

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

作者: sliencexiu | 来源:发表于2019-08-01 14:06 被阅读3次

前面的文章学习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<A> 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()

相关文章

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

    前面的文章学习java基础之注解,掌握了注解的基本用法。使用系统或者大神写的框架库提供给我们注解,可以省略好多配置...

  • 编译期注解学习六- 生成java文件javapoet

    1 生成文件方式 编译期注解通过读取注解,然后处理注解字段Element,最终的目的是在编译代码之前生成所需源码文...

  • 编译时注解器初探(一)

    编译时注解器初探(一) 注解处理器 (Annotation Processor) 编译时注解和运行时注解定义的方式...

  • Android进阶之自定义注解

    Android进阶之自定义注解 本篇文章内容包括: 注解的概念 元注解 自定义注解 Android自定义编译时注解...

  • 注解处理器

    一、注解 在类,接口,变量,方法前面的声明,注解的作用是对这些元素进行注释说明,不会影响编译器,通过编译器读取注解...

  • Java之 编译时注解

    说明 在现阶段的各种开发中,注解也是越来越流行了,比如ButterKnife,Retrofit,Dragger,E...

  • Java的注解-预置注解

    预置的注解 Java 语言本身已经提供了一些现成的注解。 @Deprecated 用来标记过时的元素。编译器在编译...

  • 2-HTML+CSS一些概念说明

    块元素(block level element)与内联元素(inline element) 块级元素在浏览器显示时...

  • Java注解用法

    注解元素的提供值必须是编译时常量表达式,不能使用null作为注解中任何类型元素的值。 基本类型注解类型中的元素的数...

  • 做一个简单的APT小项目——AppShortcut

    最近学习了编译时注解框架的制作,写了一个小项目。阅读本文前希望大家有关于注解的相关知识。 本文介绍一个简单的编译时...

网友评论

    本文标题:编译时注解学习一之 Element元素

    本文链接:https://www.haomeiwen.com/subject/homqdctx.html