一小时搞明白注解处理器(Annotation Processor Tool)

一小时搞明白注解处理器(Annotation Processor Tool)

ID:39633747

大小:83.50 KB

页数:11页

时间:2019-07-07

一小时搞明白注解处理器(Annotation Processor Tool)_第1页
一小时搞明白注解处理器(Annotation Processor Tool)_第2页
一小时搞明白注解处理器(Annotation Processor Tool)_第3页
一小时搞明白注解处理器(Annotation Processor Tool)_第4页
一小时搞明白注解处理器(Annotation Processor Tool)_第5页
资源描述:

《一小时搞明白注解处理器(Annotation Processor Tool)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一小时搞明白注解处理器(AnnotationProcessorTool)什么是注解处理器?注解处理器是(AnnotationProcessor)是javac的一个工具,用来在编译时扫描和编译和处理注解(Annotation)。你可以自己定义注解和注解处理器去搞一些事情。一个注解处理器它以Java代码或者(编译过的字节码)作为输入,生成文件(通常是java文件)。这些生成的java文件不能修改,并且会同其手动编写的java代码一样会被javac编译。看到这里加上之前理解,应该明白大概的过程了,就是把标记了注解的类,变量等作为输入内容,经过注解处理器处理

2、,生成想要生成的java代码。处理器AbstractProcessor处理器的写法有固定的套路,继承AbstractProcessor。如下:[java]viewplaincopy在CODE上查看代码片派生到我的代码片publicclassMyProcessorextendsAbstractProcessor{@Overridepublicsynchronizedvoidinit(ProcessingEnvironmentprocessingEnv){super.init(processingEnv);}@OverridepublicSet

3、ng>getSupportedAnnotationTypes(){returnnull;}@OverridepublicSourceVersiongetSupportedSourceVersion(){returnSourceVersion.latestSupported();}@Overridepublicbooleanprocess(Setannotations,RoundEnvironmentroundEnv){returntrue;}}init(ProcessingEnvironmentprocess

4、ingEnv)被注解处理工具调用,参数ProcessingEnvironment提供了Element,Filer,Messager等工具getSupportedAnnotationTypes()指定注解处理器是注册给那一个注解的,它是一个字符串的集合,意味着可以支持多个类型的注解,并且字符串是合法全名。getSupportedSourceVersion指定Java版本process(Setannotations,RoundEnvironmentroundEnv)这个也是最主要的,在这里扫描和处理你的注解并生成

5、Java代码,信息都在参数RoundEnvironment里了,后面会介绍。在Java7中还可以使用[java]viewplaincopy在CODE上查看代码片派生到我的代码片@SupportedSourceVersion(SourceVersion.latestSupported())@SupportedAnnotationTypes({//合法注解全名的集合})代替getSupportedSourceVersion()和getSupportedAnnotationType(),没毛病,还可以在注解处理离器中使用注解。注册注解处理器打包注解处理器的

6、时候需要一个特殊的文件javax.annotation.processing.Processor在META-INF/services路径下[plain]viewplaincopy在CODE上查看代码片派生到我的代码片--myprcessor.jar----com------example--------MyProcessor.class----META-INF------services--------javax.annotation.processing.Processor打包进javax.annotation.processing.Process

7、or的内容是处理器的合法全称,多个处理器之间换行。[plain]viewplaincopy在CODE上查看代码片派生到我的代码片com.example.myprocess.MyProcessorAcom.example.myprocess.MyProcessorBgoogle提供了一个注册处理器的库[plain]viewplaincopy在CODE上查看代码片派生到我的代码片compile'com.google.auto.service:auto-service:1.0-rc2'一个注解搞定:[java]viewplaincopy在CODE上查看代码

8、片派生到我的代码片@AutoService(Processor.class)publicclassMyPro

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。