一、媒介

你还在对着逝世板的反复代码一味复制粘贴吗?如许跟搬砖有何差别?你是否曾想过:你用代码编写出一个主动化的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相关推荐

  1. linux中的apt命令

    文章目录 linux中的apt命令 什么是apt apt需求的权限 需要sudo权限的apt命令 更新软件包索引`apt update` 升级软件包版本`apt upgrade` 完全升级`apt f ...

  2. 在java中添加源_关于Java:如何在Android Studio中添加链接的源文件夹?

    在Eclipse中,我可以将源文件夹作为"链接的源文件夹"添加到我的android项目中. 如何在Android Studio中实现同一目的? 或者是否可以添加外部文件夹以构建gr ...

  3. ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?

    问题描述 Ask Ubuntu上的许多答案都直接指向在Ubuntu软件中心中在Xubuntu中打开的this之类的链接.在Lubuntu中,我收到此错误消息: 在Firefox-Preferences ...

  4. android getter不起作用,java - 如何在Android Studio中自动生成getter和setter

    java - 如何在Android Studio中自动生成getter和setter Android Studio中是否有一个快捷方式可以自动生成给定类中的getter和setter? 14个解决方案 ...

  5. 在docker中配置apt工具与python的源均为国内源

    在docker中配置apt工具与python的源均为国内源 1.准备并进入一个docker容器 本文主要包含一些常用的配置方法.包括在docker中配置系统源.python源. 打开 linux 终端 ...

  6. ge linux安装apt_教你如何在 Linux 中使用 apt 命令

    apt 是一个命令行实用程序,用于在 Ubuntu , Debian 和相关 Linux 发行版上安装,更新,删除和管理 deb 包.它是 apt-get 和 apt-cache 工具的最常用命令和选 ...

  7. ubuntu中的apt终端命令解析

    ubuntu中的apt终端命令解析 apt(Advanced Packaging Tool)是ubuntu下的安装包管理工具,用于大部分软件的更新卸载: $ sudo apt install 软件名: ...

  8. 在Android Studio中运行Java程序

    在Android Studio中运行Java程序 有时候在开发Android时,由于调试需要,需要写一些Java程序. 由于类库引用等问题,去IntelliJ IDEA新建一个Java程序还要添加类库 ...

  9. Android Studio中打开R.java文件的方法

    1 R.java文件简介 Android Studio中的R.java文件自动收录当前应用中所有的资源,并根据这些资源建立响应的ID,可以把R.java当成Android应用的资源字典.R.java文 ...

最新文章

  1. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
  2. Alwayson--问题总结二
  3. 三星Galaxy Note 10最新消息:将取消所有实体按键
  4. html 5实用特性之data属性
  5. L2-033 简单计算器 (25 分)-PAT 团体程序设计天梯赛 GPLT
  6. Android笔记:触摸事件的分析与总结----TouchEvent处理机制
  7. 老男孩教育50期-马慧峰-决心书
  8. python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
  9. JAVA POI获取excel单元格红色字体,淡蓝色前景色的内容
  10. Android 项目集成有米 SDK 添加广告
  11. 基于OpenStack的云计算平台搭建
  12. Linux实验5——Apache、虚拟主机
  13. OpenFlow简单介绍
  14. 索尼电视A90J、A80J怎么安装蚂蚁市场下载第三方软件方法
  15. 从零开始学_JavaScript_系列(六)——CSS的padding、margin、border属性超详细解释(图文)
  16. 关于 Kubernetes中deployment的一些笔记
  17. Prege(图计算框架)l: A System for Large-Scale Graph Processing(译)
  18. 虚幻4学习日志2021.3.29 为这个ACT游戏结个尾
  19. 一例LED大屏DVI输入无信号/画面撕裂的故障
  20. asp.net CMS

热门文章

  1. gj6 深入python的set和dict
  2. java打开文件出错_打开文件错误太多,java.io.FileNotFoundException
  3. python猜数字代码_Python版的文曲星猜数字游戏代码
  4. swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...
  5. lc滤波电路电感电容值选择_这几种常见的无源滤波电路,你都了解吗 ?
  6. write up:杂项 又一张图片,还单纯吗 --图片提取
  7. 瓜分60万现金大奖,云原生编程挑战赛等你来挑战!
  8. 一文读懂阿里云数据库Autoscaling是如何工作的
  9. 特稿 | OceanBase 连破纪录:蚂蚁技术人的砥砺前行
  10. 这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%