freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

手動實現(xiàn)ioc框架(留存版)

2025-08-09 07:05上一頁面

下一頁面
  

【正文】 了findViewById方法,當(dāng)時真是驚為天人。通過編譯器生成代碼的大致流程如下:編寫Modul:iocannotation,該工程主要定義注解BindView用以修飾變量。 mElementUtils = ()。 // 檢索注解,保存包含注解的類以及需要注入的成員變量 // 該方法獲取的element是被注解標(biāo)注的所有元素,所以需要檢查 Set? extends Element elements = ()。 ()。 (// Generated code. Do not modify!\n)。 } // 生成注入的方法 private void generateMethods(StringBuilder builder) { (Override\n )。 /** * 從activity 注入 * param activity */ public static void inject(Activity activity) { inject(activity, activity, PROVIDER_ACTIVITY)。詳細(xì)過程不寫了,可以看我的github上的源碼。}輔助類在生成代碼時,統(tǒng)一繼承該接口,便于調(diào)用inject()方法(多態(tài)).注意,(host, source, provider)。編寫iocapi模塊有了標(biāo)識,也有了編譯時期的jar包,最終也生成了xxx$$Finder的輔助類,那么久剩下最后的調(diào)用了。\n39。到這里會好奇什么是輔助類,他是什么形式的,我們看一下最終生成的輔助類就會清晰了// 依賴注入生成的輔助類,最終調(diào)用inject()方法,實現(xiàn)注入public class MainActivity$$Finder implements FinderMainActivity { public MainActivity$$Finder() { } public void inject(MainActivity host, Object source, Provider provider) { // 依賴注入的具體實現(xiàn) = (TextView)((TextView)(source, 2131492945))。 try { // processingEnv : 注解處理環(huán)境(工具類),提供很多有用的功能工具類 JavaFileObject jfo = ().createSourceFile( (), ())??赐曜⒔庵?,看類聲明,繼承AbstractProcessor,實現(xiàn)三個方法:getSupportedAnnotationTypes:獲取注解支持的類型,在此,我們支持BindView,沒有什么疑問getSupportedSourceVersion:指定使用的java版本,一般默認(rèn)支持返回最新,默認(rèn)此寫法,沒什么問題。 private Types mTypeUtils。畢竟反射很影響效率。后來遇到了Butterknife之后,發(fā)現(xiàn)不僅能夠通過實現(xiàn)findViewById方法,甚至連setOnClickListener,getString(),getResource()方法,都能通過一行注解的方式快速的實現(xiàn)。編寫Modul:iocpiler,該工程為最終會打成jar包,主要是在javac編譯時期根據(jù)注解生成注入代碼的相關(guān)類編寫Modul:iocapi,(),調(diào)用代碼注入的方法。 mMessager = ()。 for (Element element : elements) { // 檢查element的類型 if (!checkAnnotationValid(element, )) { return false。 // 在
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1