美文网首页
如何自定义注解处理器

如何自定义注解处理器

作者: caspar51688 | 来源:发表于2021-05-04 18:35 被阅读0次

    简介

    注解处理器(Annotation Processor)是javac的一个工具,不管是运行时注解还是编译时注解,都会通过处理器在编译时进行扫描和处理注解。

    自定义处理器

    1、在Androidstudio中创建一个Java Library Module(注解处理器需要javax包的支持,Android环境下是访问不到javax包的,同时注解处理器要被打包进jar包里面才能被系统识别,这就是选用ava Library的原因,目前注解注解框架均是如此。)

    2、定义一个注解


    image.png

    3、 继承虚处理器AbstractProcessor


    image.png
    • init(ProcessingEnvironment processingEnvironment):
      每一个注解处理器类都必须有一个空的构造函数。然而,这里有一个特殊的init()方法,它会被注解处理工具调用,并输入ProcessingEnviroment参数。ProcessingEnviroment提供很多有用的工具类Elements, Types和Filer。后面我们将看到详细的内容。
    • process(Set<? extends TypeElement> annotations, RoundEnvironment env):
      这相当于每个处理器的主函数main()。扫描、评估和处理注解的代码,以及生成Java文件。输入参数RoundEnviroment,可以让你查询出包含特定注解的被注解元素。后面我们将看到详细的内容。
    • getSupportedAnnotationTypes():
      这里你必须指定,这个注解处理器是注册给哪个注解的。注意,它的返回值是一个字符串的集合,包含本处理器想要处理的注解类型的合法全称。换句话说,你在这里定义你的注解处理器注册到哪些注解上。
    • getSupportedSourceVersion():
      用来指定你使用的Java版本。通常这里返回SourceVersion.latestSupported()。然而,如果你有足够的理由只支持Java 6的话,你也可以返回SourceVersion.RELEASE_6。我推荐你使用前者。
    image.png

    上图为在process方法中使用javapoet自动生成java类

    4、注册处理器

    • 注册方式一:手动注册
      在使用注解处理器需要先声明,步骤:
      • 需要在 processors 库的 main 目录下新建 resources 资源文件夹;
      • 在 resources文件夹下建立 META-INF/services 目录文件


        image.png

    在文件java.lang.Process中增加注册器路径名:
    com.lsm.processor.JsonProcessor

    • 方式二:自动注册
      google提供了一个注册处理器的库AutoService。帮助将要编译的处理器进行编译。
      compile ‘com.google.auto.service:auto-service:1.0-rc4’


      image.png
      image.png

    至此自定义注解处理器完成。

    5、使用自定义注解处理器
    将processor编译出的jar包拷贝到项目中


    image.png image.png

    在工程的build.gradle中增加使用的处理器:


    image.png

    相关文章

      网友评论

          本文标题:如何自定义注解处理器

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