简单记录围观annotationprocessor,并在eclipse开发自己的ap

本文介绍了Java注解处理器的目的——提供预处理机制,扩展代码能力。详细讲述了如何在Eclipse中创建和调试Annotation Processor,以及相关的接口和类。通过调试和学习相关API,可以更高效地编写此类处理器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

annotation 的目的是什么 — 提供预处理机制,能够对代码本身扩展

在使用java编码时,我们会遇到一些重复编码的工作。这边的重复不是指逻辑上
的重复,而是指代码编写上的重复。编码过程上的重复,很难使用代码来做抽象
描述。这时候,就不自觉的怀念其C中的宏定义(define), 让我们有机会再提前一
部,在预处理器预处理阶段,对代码本身进行扩展与自动编写。Java中也提供了
类似的机制,减轻重复编码工作 — Annotation Prossor.

简介

这3个pkgs中定义了annotation processor的2个大的概念: annotation与processor

java.lang.annotation
javax.annotation
javax.annotation.processing

其中有一个很有趣的语法 `@interface`, ‘interface’是接口定义,那么前面加
个’@’,就是定义接口本身了。

几个重要的类

classdescriptionrelative
Retention该声明可以保留到什么时候RetentionPolicy
Target该声明可以用在什么定义上ElementType
Processor预处理的回调类 

当我们写完半自动化代码后,将它压制成jar,我们还需要告诉javac从那边加载
这个annatation(入口在哪里)。这个位置是固定的:

-rw-rw-rw-        39  24-Apr-2015  17:28:22  META-INF/services/javax.annotation.processing.Processor

然后我们在工程中,打开annotation预处理开关,并指定到之前压制出来的jar,
就能够使用上我们的半自动化代码了.

eclipse中的调试

编写annotation processor过程中,不可避免的需要调试。Eclipse可以使用
plugin方式,来调试开发项目特定的annotation processor代码。
https://code.google.com/p/acris/wiki/AnnotationProcessing_DebuggingEclipse

其它

  1. 想要更好的编写annotation processor代码,需要对java语法语义及定义有
    了解。因为需要对代码本身做处理。
  2. 编写工具类可以加快编写流程,annotation processor都是非常底层的api操
  3. 受到启发的项目 Realm-java, ButterKnife
  4. some links

http://kerebus.com/2011/02/using-java-6-processors-in-eclipse/
http://www.cnblogs.com/bingoidea/archive/2011/03/31/2000726.html
http://hannesdorfmann.com/annotation-processing/annotationprocessing101/
http://docs.oracle.com/javase/1.5.0/docs/guide/apt/GettingStarted.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值