Generics 迁移到androidx时意外覆盖
科特林:1.2.71 安道尔工作室:3.2.1 gradle插件:3.2.0 格拉德尔:4.6 我从下面得到一个意外覆盖错误代码示例,如果您发现任何错误使用,请告诉我,不胜感激Generics 迁移到androidx时意外覆盖,generics,kotlin,Generics,Kotlin,科特林:1.2.71 安道尔工作室:3.2.1 gradle插件:3.2.0 格拉德尔:4.6 我从下面得到一个意外覆盖错误代码示例,如果您发现任何错误使用,请告诉我,不胜感激 abstract class ResourceLiveData<T: Resource<*>> : LiveData<T>(){ override fun observe(owner: LifecycleOwner, observer: Observer<T>)
abstract class ResourceLiveData<T: Resource<*>> : LiveData<T>(){
override fun observe(owner: LifecycleOwner, observer: Observer<T>) {
do something here ...
super.observe(owner, observer)
}
}
演示impl代码:
// Inherited platform declarations clash: The following declarations have the same JVM signature (observe(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Observer;)V):
// fun observe(owner: LifecycleOwner, observer: Observer<Resource<String>>): Unit defined in com.demo.live.StringResourceLiveData
// fun observe(p0: LifecycleOwner, p1: Observer<in Resource<String>!>): Unit defined in com.demo.live.StringResourceLiveData
class StringResourceLiveData : ResourceLiveData<Resource<String>>()
使现代化
ResourceLiveData位于第三方库中,库依赖于android.arch.lifecycle
我的应用程序正在迁移到androidx,因此,我在gradle.properties中添加了android.useAndroidX=true和android.enableJetifier=true
同步后,ResourceLiveData.class导入已更改为androidx,但这里的问题是,ResourceLiveData重写方法中不包含反变量,但androidx.lifecycle.LiveData需要它您的代码存在一系列问题 如果要扩展ResourceLiveData,则需要将其打开。 覆盖定义不正确。我使用IDE生成了正确的版本 从类扩展需要调用超类构造函数 这是正确的代码
open class ResourceLiveData<T: Resource<*>> : LiveData<T>(){
override fun observe(owner: LifecycleOwner, observer: Observer<in T>) {
do something here ...
super.observe(owner, observer)
}
}
class StringResourceLiveData : ResourceLiveData<Resource<String>>()
你的代码有很多问题 如果要扩展ResourceLiveData,则需要将其打开。 覆盖定义不正确。我使用IDE生成了正确的版本 从类扩展需要调用超类构造函数 这是正确的代码
open class ResourceLiveData<T: Resource<*>> : LiveData<T>(){
override fun observe(owner: LifecycleOwner, observer: Observer<in T>) {
do something here ...
super.observe(owner, observer)
}
}
class StringResourceLiveData : ResourceLiveData<Resource<String>>()
请发布您收到的完整错误。@EvanKnowles这是一个编译错误,完整消息已发布在示例代码注释中。请发布您收到的完整错误。@EvanKnowles这是一个编译错误,完整消息已发布在示例代码注释中我的错误,本例中的ResourceLiveData是抽象类我的错误,本例中的ResourceLiveData是抽象类