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不克不及直接互相依附,至于为什么不克不及直接依附,我就不细说了,总之一句话:不信你尝尝看就知道喽!)

39e6b9b6348b54de186809487e7958b8.png-wh_651x-s_304762226.png

3.在apt的build.gradle里,添加如下依附。到此,我们的情况设备工作就告一段落了。

f3ceb8c25d0fec2dc5d2f24fda70f7b2.png

(个中: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值