注解基礎:
1.注解的意義是什么?
注解本身沒有任何意義午衰,只是一個標識割择,它只有結合一些如反射眷篇,字節(jié)碼插樁等技術才變得有意義。
1.怎么定義注解(@target荔泳,@retention,value(),自定義名字后用法也必須指定)
2.什么是元注解
3.如何自定義一個注解處理器:
三步走:1繼承jdk類 2.推薦手動注冊(autowire兼容gradle5.0+)3.Log用processorEnv 4.app模塊annotationProcessor project(“引用”)蕉饼,注解類上寫@susspressxxxx(注解全限定名表示該注解處理器只關心該類型注解)
4.注解運行時機
javac 搜集所有注解->封裝成TypeElement->javac吊起注解處理程序->處理我們自定義注解類
5.自定義注解替換代碼里的所有枚舉類
注解應用場景:
作業(yè)1:
通過自定注解和反射技術完成findviewbyId功能
作業(yè)2:
注意反射與泛型的結合:
比如,Response<Data> apiResult = gson.fromJson(jsonStr,Response.class); 一定會報錯玛歌,為什么呢昧港?
作業(yè)3:
通過反射和注解實現頁面跳轉的參數注入
重點:能夠說出應用場景和運用實例
代理模式
1.代理模式有3個角色:抽象角色,真實角色支子,代理角色
實例:比如http請求例子
2.靜態(tài)代理的缺點:
當每個實現抽象接口的真實角色擁有多種技能時创肥,也就是實現多種接口時,你會發(fā)現他的代理類也只能代理一種技能,即只實現了一種接口叹侄,必然就會增多很多代理類文件
3.動態(tài)代理:
解決靜態(tài)代理的缺點巩搏,即用一個代理類實現全部代理技能。
具體講下原理:
4.Retrofit其實就是對 動態(tài)代理圈膏,注解塔猾,反射的結合
5.作業(yè):利用 動態(tài)代理,注解稽坤,反射 實現onclick,提示:在某個方法上加注解