JAVA 注解 processor_注解处理器(Annotation Processor)简析

概念

注解处理器(Annotation Processor)是javac内置的一个用于编译时扫描和处理注解(Annotation)的工具。简单的说,在源代码编译阶段,通过注解处理器,我们可以获取源文件内注解(Annotation)相关内容。

用途

由于注解处理器可以在程序编译阶段工作,所以我们可以在编译期间通过注解处理器进行我们需要的操作。比较常用的用法就是在编译期间获取相关注解数据,然后动态生成.java源文件(让机器帮我们写代码),通常是自动产生一些有规律性的重复代码,解决了手工编写重复代码的问题,大大提升编码效率。

例子

Annotation Processor实质原理

** 编译期间根据注解(Annotation)获取相关数据 **

既然Annotation Processor是为了在编译期间获取注解(Annotation)相关内容,那么,具体的操作步骤要如何做呢:

Android Studio创建一个java library

自定义一个注解(Annotation),用于存储元数据

@Retention(RetentionPolicy.SOURCE)

@Target(ElementType.FIELD)

public @interface BindView {

int value() default -1;

}

创建一个自定义Annotation Processor继承于AbstractProcessor

package com.example;

@AutoService(Processor.class)

public class MyProcessor extends AbstractProcessor {

@Override

public synchronized void init(ProcessingEnvironment env){

}

@Override

public boolean process(Set extends TypeElement> annoations, RoundEnvironment roundEnv) { }

@Override

public Set getSupportedAnnotationTypes() {

}

@Override

public SourceVersion getSupportedSourceVersion() {

}

}

@AutoService(Processor.class) :向javac注册我们这个自定义的注解处理器,这样,在javac编译时,才会调用到我们这个自定义的注解处理器方法。

AutoService这里主要是用来生成

META-INF/services/javax.annotation.processing.Processor文件的。如果不加上这个注解,那么,你需要自己进行手动配置进行注册,具体手动注册方法如下:

1.创建一个

META-INF/services/javax.annotation.processing.Processor文件,

其内容是一系列的自定义注解处理器完整有效类名集合,以换行切割:

com.example.MyProcessor

com.foo.OtherProcessor

net.blabla.SpecialProcessor

2.将自定义注解处理器和

META-INF/services/javax.annotation.processing.Processor打包成一个.jar文件。所以其目录结构大概如下所示:

MyProcessor.jar

- com

- example

- MyProcessor.class

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值