为什么我不能用 Kotlin 编写这个特定的作业?

Why can't I write this particular assignment in Kotlin?

我在一个项目中使用 MVI 模式,所以我写了状态和事件 classes。对于 viewModel 中的事件部分,我使用了 MutableLiveData 类型的私有 属性 _event,并将其作为 LiveData 公开给 Activity,这样:

private val _event = MutableLiveData<Event>()
val event: LiveData<Event>
    get() {
        return _event
    }

在我需要使用来自 Google 的 sample code 中的 SingleLiveEvent class(而不是它的超类型 MutableLiveData)之前,一切都运行良好; SingleLiveEvent class 扩展了 MutableLiveData,后者又扩展了 LiveData。

所以我想我可以写这样的东西:

private val _event: LiveData<Event> = SingleLiveEvent()
val event: LiveData<Event>
    get() {
        return _event
    }

但我在编辑器中收到此错误:

类型不匹配。 必需:LiveData 发现:SingleLiveEvent

我错过了什么? SingleLiveEvent 是 LiveData 的子类型,并且具有相同的类型参数,那么为什么这个赋值不起作用?

提前致谢

不是 100% 确定,但我敢打赌你自动将 SingleLiveEvent<T> Java 代码转换为 Kotlin,并将其声明为 MutableLiveData<T?> 的子类而不是 MutableLiveData<T>.