看到網(wǎng)上有Dagger的介紹就想著學(xué)習(xí)一下偶惠,可是找到的都是一些很初級的教程利虫,沒有解釋注解的具體含義,看著有些頭大罗捎,就自己找了些教程看了下
下面是2014年的文章,一位博主翻譯的拉盾,可以看一下桨菜,這是我看到的解釋的比較清楚的一篇文章,當(dāng)然由于是兩年前的文章捉偏,一些用法已經(jīng)改變了倒得,大家可以參考這篇文章理解下注入的概念:
https://asce1885.gitbooks.io/android-rd-senior-advanced/content/androidzhong_de_yi_lai_zhu_ru_ff1a_dagger_han_shu_ku_de_shi_yong_ff08_yi_ff09.html
后續(xù)看一下能不能翻譯google的官方文檔
Qualifier關(guān)鍵字
//主要作用是幫助Dagger識別兩個相似依賴的對應(yīng)provide函數(shù)
@Qualifier
@Documented
@Retention(RUNTIME)
public @interface Named { String value() default "";}
比如下面這個類:
class ExpensiveCoffeeMaker {
@Inject @Named("water") Heater waterHeater;
@Inject @Named("hot plate") Heater hotPlateHeater;
...}
下面是它的provide函數(shù)
@Provides @Named("hot plate")
static Heater provideHotPlateHeater() {
return new ElectricHeater(70);
}
@Provides @Named("water")
static Heater provideWaterHeater() {
return new ElectricHeater(93);
}
//為了區(qū)分上面的兩個函數(shù)使用了Named注解幫助dagger識別