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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java扑克发牌程序_Java多线程实现
- 下一篇: java Date days_Java中