Kotlin開(kāi)發(fā)遇到問(wèn)題匯總

1. dagger2的@Named,無(wú)法使用

在Kotlin使用Dagger2的時(shí)候,因?yàn)橛聾Module標(biāo)注的類(lèi)里面有返回兩個(gè)類(lèi)型一樣的方法,需要用@Named來(lái)分開(kāi)標(biāo)注,不然,會(huì)build的時(shí)候報(bào)錯(cuò)。在正常情況下,用@Named(''example1")來(lái)標(biāo)注method1;用@Named("example2")來(lái)標(biāo)注method2。然后用到的地方用@Inject@Named("example1")來(lái)標(biāo)注。就完成依賴了??墒堑搅薻otlin發(fā)現(xiàn)空指針,沒(méi)有依賴成功。我又試了一下@Qualifier自定義一個(gè)注解。因?yàn)锧Named也是依賴了@Qualifier來(lái)生成的。

java是這樣子生成一個(gè)注解的

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@interface FS {
}

kotlin是這樣子生成一個(gè)注解的

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
internal annotation class FS

然后我用@FS代替@Named來(lái)標(biāo)注方法和變量,運(yùn)行后一樣是沒(méi)依賴成功,返回空指針異常。

解決方法:

然后在dagger2的issue里面提到@Named配合@Inject要這樣子用@Inject @field:Named("example1"),同理你也可以用@field:FS來(lái)標(biāo)記,也是成功的。而@Module類(lèi)里面的方法繼續(xù)用@Named來(lái)標(biāo)注最后修改就成功了。

方法一:

//BeanModule.kt
@Named("fs")
@Provides
fun showCityFS(): City {
    var city = City()
    city.setName("fs")
    return city
}

//MainActivity.kt
   @Inject @field:Named("fs")
    lateinit var city: City

方法二:

//BeanModule.kt
@FS
@Provides
fun showCityFS(): City {
    var city = City()
    city.setName("fs")
    return city
}
//MainActivity.kt
   @Inject @field:FS
    lateinit var city: City
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近口碑很好的一部動(dòng)畫(huà)電影《尋夢(mèng)環(huán)游記》正在優(yōu)酷熱映。瑞圖小編先在電影院看完后又重回優(yōu)酷看了一遍,看著看著淚花閃出...
    栩樦閱讀 467評(píng)論 0 0
  • 郭神CSDN博客剛看到郭大神換了CSDN博客頭像,恭喜郭大神步入婚姻殿堂。祝:永結(jié)同心,百年好合!新婚愉快,甜甜蜜...
    Magee_yuan閱讀 1,651評(píng)論 5 3
  • 朋友聊天,問(wèn)我:假如給我十萬(wàn)塊錢(qián),叫我再去讀高中,能不能考上重點(diǎn)大學(xué)? 我笑他,假如再給我機(jī)會(huì),能讓我像二十年前一...
    鉆牛角尖的Mark閱讀 299評(píng)論 1 0
  • 原文摘錄(P112): “勤奮、運(yùn)氣或靈活的手腕 固然重要,卻非關(guān)鍵, 唯有掌握重點(diǎn)才是成功的不二法門(mén)。 辨別事情...
    Anita_Tang閱讀 210評(píng)論 0 0

友情鏈接更多精彩內(nèi)容