Source-->源碼階段Apt技術(shù)憋飞,場景1同规,代碼合規(guī)性檢查@UNNULL,2注入類似代碼省略findviewByid等操作
Class-->編譯階段咧擂,注入一些輔助類逞盆,比如:日志,探針松申,輔助性云芦,沒必要?jiǎng)佑梅瓷洌斐蓛?nèi)存浪費(fèi)攻臀,
或者是對(duì)項(xiàng)目中使用到的jar焕数,拿不到源碼情況下之能對(duì).class進(jìn)行處理
Runtime-->運(yùn)行時(shí)纱昧,可以借助反射做一些業(yè)務(wù)相關(guān)刨啸,如:Retrofit等對(duì)源碼的切面編程
元注解是基本注解,是注解的注解识脆,源碼提供的 元注解有5種: @Retention,@Documented,@Target,@Inherited,@Repeatable
@Retention
是保留期的意思;當(dāng)應(yīng)用到其他注解上的時(shí)候设联,說明這個(gè)注解的存活時(shí)間. 取值如下:
RetentionPolicy.SOURCE 注解只有在源碼階段保留善已,在編譯器進(jìn)行編譯時(shí)將被丟棄忽視 RetentionPolicy.CLASS 注解只被保留到編譯進(jìn)行的時(shí)候,不會(huì)被加載到JVM中 * RetentionPolicy.RUNTIME 注解可以保留到程序運(yùn)行的時(shí)期离例,會(huì)被加載到JVM中换团,程序運(yùn)行時(shí)可