java apt anno_Android Studio中使用apt
一、媒介
你还在对着逝世板的反复代码一味复制粘贴吗?如许跟搬砖有何差别?你是否曾想过:你用代码编写出一个主动化的APP,但为何代码本身却缺乏了活力?控制Android-apt,杜绝反复代码,让你写代码如写诗般优雅。
二、何为apt?
apt意为:annotation processing tool(注解处理对象),这家伙可神奇了,它能经由过程注解,在编译期主动生成特定的Java文件,实现主动编写代码。
问:有什么竽暌姑?凭我本身本领能写出来的代码,为什么要主动化?@Test("abc")
publicclass MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
大年夜哥,你这是又想发挥你的复制粘贴大年夜法了吗?稍安勿躁,细看完这篇文┞仿,你会爱上这家伙的。
鼎鼎大年夜名的ButterKnife、Dagger2这两个开源库,信赖你必定有听过,你应当知道我为什么提到它们了吧。没错!这两个开源库都是基于apt的。
三、说了这么多,要怎么竽暌姑啊?别急,我们先搭建情况(基于gradle插件2.2.0以上版本)
【编辑推荐】Android安然防护之旅---应用"反调试"操作的几种筹划解析
Android中导致内存泄漏的竟然是它----Dialog
Android截屏与WebView长图分享经验总结
17位谷歌Android开辟专家是若何对待Kotlin的?
经由过程微信Android和iOS版看两大年夜体系差别【义务编辑:枯木 TEL:(010)68476606】
1.在android studio中新建一个Java module,用于存装注解处理逻辑,名字随便啦,反正我一般都取名:apt。很重要的事:在app module中添加注解处理依附:annotationProcessor project(‘:apt’)
(解释原因:因为android的module中不包含有apt相干类,是以须要新建一个java module来编写apt逻辑。什么?你不信?不信你写个类持续AbstractProcessor尝尝)
2.再次新建一个module(android、java都可以),用于存装注解,名字也随便,反正我这里取名为:anno,并且在app、apt的build.gradle文件下,添加依附compile project(‘:anno’)
(为什么要新建module去盛装注解类,而不放到app module或者apt module中去:最重要的原因就是app module与apt module不克不及直接互相依附,至于为什么不克不及直接依附,我就不细说了,总之一句话:不信你尝尝看就知道喽!)
3.在apt的build.gradle里,添加如下依附。到此,我们的情况设备工作就告一段落了。
(个中:1.auto-service是用于注解后主动在特定路径下生成设备文件;2.javapoet是用于合营apt便捷生成java文件的对象。信赖如许说来岁夜家还云里雾里,不要焦急,持续往下看)
四、情况搭建好了,接下来就是秀操作时光
1.起首,在anno module里新建一个注解类@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public@interface Test {
String value();
}
2.在apt module里新建一个注解处理类,持续于AbstractProcessorpublicclass TestProcessor extends AbstractProcessor{
@Override
publicboolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) {
returnfalse;
}
}
3.既然说apt是要主动生成java文件,那我们就须要拟构出一个目标类。
推荐阅读
其实面对膳绫擎的反例场景可以应用JDK1.5 java.util.concurrent.atomic中供给的原子包装类型来包管原子性操作
概述1、不合适应用volatile的场景(非原子性操作)Java说话中关键字 volatile 被>>>详细阅读
地址:http://www.17bianji.com/lsqh/35628.html
java apt anno_Android Studio中使用apt相关推荐
- linux中的apt命令
文章目录 linux中的apt命令 什么是apt apt需求的权限 需要sudo权限的apt命令 更新软件包索引`apt update` 升级软件包版本`apt upgrade` 完全升级`apt f ...
- 在java中添加源_关于Java:如何在Android Studio中添加链接的源文件夹?
在Eclipse中,我可以将源文件夹作为"链接的源文件夹"添加到我的android项目中. 如何在Android Studio中实现同一目的? 或者是否可以添加外部文件夹以构建gr ...
- ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?
问题描述 Ask Ubuntu上的许多答案都直接指向在Ubuntu软件中心中在Xubuntu中打开的this之类的链接.在Lubuntu中,我收到此错误消息: 在Firefox-Preferences ...
- android getter不起作用,java - 如何在Android Studio中自动生成getter和setter
java - 如何在Android Studio中自动生成getter和setter Android Studio中是否有一个快捷方式可以自动生成给定类中的getter和setter? 14个解决方案 ...
- 在docker中配置apt工具与python的源均为国内源
在docker中配置apt工具与python的源均为国内源 1.准备并进入一个docker容器 本文主要包含一些常用的配置方法.包括在docker中配置系统源.python源. 打开 linux 终端 ...
- ge linux安装apt_教你如何在 Linux 中使用 apt 命令
apt 是一个命令行实用程序,用于在 Ubuntu , Debian 和相关 Linux 发行版上安装,更新,删除和管理 deb 包.它是 apt-get 和 apt-cache 工具的最常用命令和选 ...
- ubuntu中的apt终端命令解析
ubuntu中的apt终端命令解析 apt(Advanced Packaging Tool)是ubuntu下的安装包管理工具,用于大部分软件的更新卸载: $ sudo apt install 软件名: ...
- 在Android Studio中运行Java程序
在Android Studio中运行Java程序 有时候在开发Android时,由于调试需要,需要写一些Java程序. 由于类库引用等问题,去IntelliJ IDEA新建一个Java程序还要添加类库 ...
- Android Studio中打开R.java文件的方法
1 R.java文件简介 Android Studio中的R.java文件自动收录当前应用中所有的资源,并根据这些资源建立响应的ID,可以把R.java当成Android应用的资源字典.R.java文 ...
最新文章
- 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
- Alwayson--问题总结二
- 三星Galaxy Note 10最新消息:将取消所有实体按键
- html 5实用特性之data属性
- L2-033 简单计算器 (25 分)-PAT 团体程序设计天梯赛 GPLT
- Android笔记:触摸事件的分析与总结----TouchEvent处理机制
- 老男孩教育50期-马慧峰-决心书
- python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
- JAVA POI获取excel单元格红色字体,淡蓝色前景色的内容
- Android 项目集成有米 SDK 添加广告
- 基于OpenStack的云计算平台搭建
- Linux实验5——Apache、虚拟主机
- OpenFlow简单介绍
- 索尼电视A90J、A80J怎么安装蚂蚁市场下载第三方软件方法
- 从零开始学_JavaScript_系列(六)——CSS的padding、margin、border属性超详细解释(图文)
- 关于 Kubernetes中deployment的一些笔记
- Prege(图计算框架)l: A System for Large-Scale Graph Processing(译)
- 虚幻4学习日志2021.3.29 为这个ACT游戏结个尾
- 一例LED大屏DVI输入无信号/画面撕裂的故障
- asp.net CMS
热门文章
- gj6 深入python的set和dict
- java打开文件出错_打开文件错误太多,java.io.FileNotFoundException
- python猜数字代码_Python版的文曲星猜数字游戏代码
- swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...
- lc滤波电路电感电容值选择_这几种常见的无源滤波电路,你都了解吗 ?
- write up:杂项 又一张图片,还单纯吗 --图片提取
- 瓜分60万现金大奖,云原生编程挑战赛等你来挑战!
- 一文读懂阿里云数据库Autoscaling是如何工作的
- 特稿 | OceanBase 连破纪录:蚂蚁技术人的砥砺前行
- 这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%