Android注解处理器APT技术简介
Android注解处理器APT技术简介
- APT是什么
- 例子
- APT有什么用 (好处)
- APT原理 (为什么)
- APT实践 (怎么做)
- 参考
APT是什么
APT全称“Annotation Processing Tool”,即注解处理器,是javac的一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,并根据注解自动生成代码,帮助开发者减少了很多重复代码的编写。
例子
很多著名的框架用到APT的思想,通过注解编译期间自动生成代码,简化使用
- Butterknife
- Dragger
- Room
另外,还有是运行时注解,例如
- Retrofit
APT有什么用 (好处)
可以在编译时生成额外的.java文件,在程序运行的时候调用相关方法,可以达到减少重复代码的效果。它的好处:提高开发效率,使得项目更容易维护和扩展,同时几乎不影响性能。
APT原理 (为什么)
通过APT(Annotation Processing Tool)技术,即注解处理器,在编译时扫描并处理注解,注解处理器最终生成处理注解逻辑的.java文件。
APT实践 (怎么做)
- 创建自定义注解@interface;
- 创建并注册注解处理器AbstractProcesso,生成处理注解逻辑的.java文件;
- 封装一个供外部调用的API,用的是反射技术,具体来说就是调用第二步中生成的代码中的方法;
- 在业务代码中使用,比如Activity、Fragment、Adapter
参考
- Android编译时注解–入门篇(AbstractProcessor、APT)
- 你必须知道的APT、annotationProcessor、android-apt、Provided、自定义注解
- Android 注解系列之APT工具
- Android 利用 APT 技术在编译期生成代码
Android注解处理器APT技术简介相关推荐
- 秒懂Android注解处理器(Android Annotation Processor)
[版权申明]非商业目的可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/90734159 出自:shusheng007 文章目 ...
- 【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
文章目录 一.报错信息 二.解决方案 一.报错信息 Android APT , 使用 注解处理器 生成 Java 代码 , 报如下错误 ; 错误: 无法访问MainActivity_ViewBinde ...
- Android 注解处理器使用攻略
上一篇写了JavaPoet使用攻略,了解了JavaPoet用法.那么我们就可以结合今天的Annotation Processing Tool(APT)来自定义注解处理器. 注解处理器简单解释就是收集我 ...
- java注解与APT技术
1,基本概念 什么是注解? 注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部 ...
- Android 注解及apt使用
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lib739449500/article/details/98482907 1.什么是apt 什么是a ...
- 注解和注解处理器APT
目录 背景: 常见注解 元注解 自定义注解 1.创建自定义注解 2. 创建注解处理器 3. 注册apt 背景: 项目中xml是一种松耦合的配置文件,但是随着项目的越来越大,xml文件也会越来越复杂, ...
- Android 自定义注解处理器详解
文章目录 AbstractProcessor 方法详细信息 ProcessingEnvironment 方法详细信息 1 新建 Java Library 1.1 新建 1.2 确定依赖关系 2 创建自 ...
- Java进阶_3 注解、APT
Java进阶_3 注解.APT 一.注解的概念 注解(Annotation) 也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在 ...
- 边端云处理器系列技术参数
边端云处理器系列技术参数 锐捷RG-CT7800系列云终端 基于兆芯开先® KX-6000系列处理器 特点: • 小身材 • 大能量 • 2.4L 机箱容量 • 强劲计算性能 简介: • 8核2.7G ...
最新文章
- 在Spring中采用声明式方法对Hibernate和JDBC进行统一的事务配置(AOP)
- 一次失败的机巡平台对接经历分享
- 成功解决运行tensorflow时ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘
- java libpcap,Linux下编译安装libpcap
- interface-C#接口-统一的标准
- 哈达玛变换的应用SATD、SAD等匹配算法
- maven学习(一)
- Java8 stream用法-备忘录
- lintcode :reverse integer 颠倒整数
- HadoopLearning
- 列表左右移动 2017-03-23
- CRM管理系统源码PHP开源系统源码
- 波浪动力滑翔机的综述
- yarn中MR作业报错Java heap space
- NEO 交易所钱包开发之离线签名【区块链】JAVA
- 关于yolov3.weights文件下载地址的分享
- 2021黑马web前端
- Vue的大坑 input手动赋值后无法修改问题
- windows 下 安装python以及scrapy 环境
- python实际应用
热门文章
- 趋势安全大师 for Mac(杀毒软件) v2.3.0中文破解版
- UNIX下执行文件的减肥工具strip[转载]
- Excel vba使用正则表达式处理联通官网导出的通话详单
- FASTJSON性能优化
- c语言if语句教学设计,c语言if语句教学设计
- Android JNI 之 JNIEnv 解析
- 【MSP430】如何用USB转TTL 串口下载
- 侠客风云传未能连接到服务器,《侠客风云传:前传》无法启动解决方法
- 华三交换机irf堆叠配置方法
- 港版-已过保 MacBookPro因显示屏涂层脱落去天才吧免费换屏过程