Kotlin中使用Dagger的坑:使用@Named限定符报错

最近开发APP使用到了Kotlin,Daager2,以为一切都和Java一样的使用,然后就经历过了kapt,@JvmField等问题

之后又发生了@Named限定符问题

事情的经过是这样的,使用到了retrofit,想提供两个retrofit实例在不同的地方使用(其他文章会讲到使用场景)

然后就使用到了@Named限定符具体代码如下

声明两个实例提供者

Kotlin中使用Dagger的坑:使用@Named限定符报错

然后就是使用,java使用没什么问题

Kotlin中使用Dagger的坑:使用@Named限定符报错

然后就遇到了接下来要讲的问题,kotlin使用的时候,先是正常使用

Kotlin中使用Dagger的坑:使用@Named限定符报错

看着没啥问题,编译,哦豁,报错

Kotlin中使用Dagger的坑:使用@Named限定符报错

经过好久的百度,找到以下这篇文章(https://www.jianshu.com/p/1b98d0a0e42d

大意是,kotlin使用限定符的时候有些问题,然后daager2官方也在某一个版本中发现并修复了这个问题,具体使用方法如下

Kotlin中使用Dagger的坑:使用@Named限定符报错

编译,完美通过

问题总结

按照Java的使用方式使用限定符,Java类没有问题,但是用Kotlin使用报错如下

Kotlin中使用Dagger的坑:使用@Named限定符报错

就可以使用 @filed:限定符 来解决