2.2 编译时注解
运行时注解RUNTIME如上2.1所示,大年夜多半时刻实袈溱运行时应用反射来实现所需效不雅,这很大年夜程度上影响效力,如不雅BufferKnife的每个View注入弗成能若何实现。实际上,ButterKnife应用的是编译时注解CLASS,如下图X2.2,是ButterKnife的@BindView注解,它是一个编译时注解,在编译时生查对应java代码,实现注入。

说到编译时注解,就不得不说注解处理器 AbstractProcessor,如不雅你有留意,一般第三方注解相干的类库,如bufferKnike、ARouter,都有一个Compiler定名的Module,如下图X2.3,这琅绫擎一般都是注解处理器,用于编译时处理对应的注解。
注解处理器(Annotation Processor)是javac的一个对象,它用来在编译时扫描和处理注解(Annotation)。你可以对自定义注解,并注册响应的注解处理器,用于处理你的注解逻辑。

如下所示,实现一个自定义注解处理器,至少重写四个办法,并且注册你的自定义Processor,具体可参考下方代码CustomProcessor。
- @AutoService(Processor.class),谷歌供给的主动注册注解,为你生成注册Processor所须要的格局文件(com.google.auto相干包)。
- init(ProcessingEnvironment env),初始化处理器,一般在这里获取我们须要的对象类。
- getSupportedAnnotationTypes(),指定注解处理器是注册给哪个注解的,返回指定支撑的注解类集合。
- getSupportedSourceVersion() ,指定java版本。
- process(),处理器实际处理逻辑人口。
推荐阅读
人工智能的将来到底应当是什么样的?它应当朝着什么偏向成长?在成长的过程中应当留意什么?这些都是每一个存眷科技成长的人在思虑的问题。比来,O'Reilly Media 开创人兼 CEO Tim O'Reil>>>详细阅读
本文标题:Android注解快速入门和实用解析
地址:http://www.17bianji.com/lsqh/37700.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示