【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
文章目錄
- 一、注解處理器 依賴 編譯時注解
- 二、設置 注解處理器 支持的注解類型
- 三、設置 注解處理器 支持的 Java 版本
- 四、博客資源
Android APT 學習進階路徑 : 推薦按照順序閱讀 , 從零基礎到開發(fā)簡易 ButterKnife 注解框架的學習路徑 ;
- 【Java 注解】注解簡介及作用
- 【Java 注解】自定義注解 ( 注解屬性定義與賦值 )
- 【Java 注解】自定義注解 ( 元注解 )
- 【Java 注解】自定義注解 ( 注解解析 )
- 【Java 注解】自定義注解 ( 使用注解實現(xiàn)簡單測試框架 )
- 【Android APT】編譯時技術 ( ButterKnife 原理分析 )
- 【Android APT】編譯時技術 ( 編譯時注解 和 注解處理器 依賴庫 )
- 【Android APT】編譯時技術 ( 開發(fā)編譯時注解 )
- 【Android APT】注解處理器 ( 注解標注 與 初始化方法 )
上一篇博客 【Android APT】注解處理器 ( 注解標注 與 初始化方法 ) 中 開始開發(fā) AbstractProcessor 注解處理器類 , 使用 com.google.auto.service:auto-service:1.0-rc4 Google 服務庫提供的 @AutoService(Processor.class) 注解標注該 注解處理器 類 , 簡單介紹了 init 方法 , 以及在該方法中獲取 Filer 和 Messager 工具類 ;
一、注解處理器 依賴 編譯時注解
注解處理器 需要處理 編譯時注解 , 因此必須能夠拿到 編譯時注解 的引用 , 注解處理器 Module 需要依賴 編譯時注解 Module ;
在 注解處理器 Module 的 build.gradle 的 dependencies 依賴中添加 implementation project(path: ':annotation') 依賴 ;
plugins {id 'java-library' }java {sourceCompatibility = JavaVersion.VERSION_1_7targetCompatibility = JavaVersion.VERSION_1_7 }dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation project(path: ':annotation')annotationProcessor 'com.google.auto.service:auto-service:1.0-rc4'compileOnly 'com.google.auto.service:auto-service:1.0-rc3' }
二、設置 注解處理器 支持的注解類型
注解處理器 抽象類 AbstractProcessor 中的 getSupportedAnnotationTypes 方法 , 用于聲明 注解處理器 要處理的注解類型 ;
@AutoService(Processor.class) public class Compiler extends AbstractProcessor {@Overridepublic Set<String> getSupportedAnnotationTypes() {return super.getSupportedAnnotationTypes();} }該方法的返回值是 Set<String> , 因此可以設置多個處理的 注解類型 ;
在 getSupportedAnnotationTypes 方法中構造一個 Set<String> 集合 , 向其中放置要解析注解的全類名字符串 ;
@AutoService(Processor.class) public class Compiler extends AbstractProcessor {/*** 聲明 注解處理器 要處理的注解類型* @return*/@Overridepublic Set<String> getSupportedAnnotationTypes() {Set<String> supportedAnnotationTypes = new HashSet<String>();// 將 BindView 全類名 kim.hsl.annotation.BinndView 放到 Set 集合中supportedAnnotationTypes.add(BindView.class.getCanonicalName());return supportedAnnotationTypes;} }設置 注解處理器 支持的注解類型 , 也可以使用 注解 的方式進行聲明 ;
使用 @SupportedAnnotationTypes 注解 , 也可以聲明 注解處理器 支持的注解類型 ;
@Documented @Target(TYPE) @Retention(RUNTIME) public @interface SupportedAnnotationTypes {/*** Returns the names of the supported annotation types.* @return the names of the supported annotation types*/String [] value(); }注意 : 兩種方式二選一 , 不能同時存在 ;
三、設置 注解處理器 支持的 Java 版本
注解處理器 抽象類 AbstractProcessor 中的 getSupportedSourceVersion 方法 , 用于聲明 該注解處理器 支持的 Java 版本 ;
一般情況下要支持到最新的 Java 版本 ,
通過調用 ProcessingEnvironment 類的 getSourceVersion 方法 , 可以獲取最新的 Java 版本 ;
@AutoService(Processor.class) public class Compiler extends AbstractProcessor {/*** 聲明支持的 JDK 版本* @return*/@Overridepublic SourceVersion getSupportedSourceVersion() {// 通過 ProcessingEnvironment 類獲取最新的 Java 版本并返回return processingEnv.getSourceVersion();} }設置 注解處理器 支持的 Java 語言版本 , 也可以使用 注解 的方式進行聲明 ;
使用 @SupportedSourceVersion 注解 , 也可以聲明 注解處理器 支持的 Java 語言版本 ;
@Documented @Target(TYPE) @Retention(RUNTIME) public @interface SupportedSourceVersion {/*** Returns the latest supported source version.* @return the latest supported source version*/SourceVersion value(); }注意 : 兩種方式二選一 , 不能同時存在 ;
四、博客資源
博客源碼 :
-
GitHub : https://github.com/han1202012/APT
-
CSDN :
總結
以上是生活随笔為你收集整理的【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android APT】注解处理器 (
- 下一篇: 【Android APT】注解处理器 (