当我尝试通过构造函数在Kotlin
类中注入一个类时,我遇到了此异常。
我一直在阅读有关在Java
中解决此问题的方法,方法是在获取注入的类中添加一个空的构造函数。
但是,在Kotlin
中似乎不可能(或者我不怎么做)。
引发异常的代码没有异常...只是简单的注入。
这里是注入异常的一段代码:
class RemoteService @Inject constructor(
@SongListRepo private val songListRepo: SongListRepo): MainBaseService() {
...
...
...
}
当然,SongListRepo
由模块以通常的Dagger 2方式提供。
--------编辑:---------
经过@Demigod的帮助和评论后,代码如下:
class RemoteService (): MainBaseService() {
lateinit var songLR : SongListRepo
@Inject constructor(@SongListRepo songListRepo: SongListRepo) : this(
{
this.songLR = songListRepo
}
现在的问题是二级构造函数永远不会初始化
答案 0 :(得分:0)
您收到的错误是否可能与此Service
有关(我想像Fragment
一样,它们必须具有零参数构造函数,以便平台能够重新创建它们)?如果是,则可以使用按需注入,例如:
class RemoteService: MainBaseService() {
@Inject
@SongListRepo
private lateinit var songListRepo: SongListRepo
init {
// Something like this
AndroidInjection.inject(this)
}
}
或者,无论如何,您可以添加其他构造函数,例如:
class RemoteService constructor(): MainBaseService() {
private lateinit var songListRepo: SongListRepo? = null
@Inject constructor(@SongListRepo songListRepo: SongListRepo):this() {
this.songListRepo = songListRepo
}
}
有关构造函数here
的更多信息