Kotlin 如何在密封的通用层次结构中定义对象?
如何在密封的通用层次结构中定义对象?对象声明不适用于泛型Kotlin 如何在密封的通用层次结构中定义对象?,kotlin,Kotlin,如何在密封的通用层次结构中定义对象?对象声明不适用于泛型 sealed class PaginationViewState<T> { object LoadingFirstPage: PaginationViewState<T>()//doesn't work object LoadingPage: PaginationViewState<T>()//doesn't work data class DataLoaded<T>
sealed class PaginationViewState<T> {
object LoadingFirstPage: PaginationViewState<T>()//doesn't work
object LoadingPage: PaginationViewState<T>()//doesn't work
data class DataLoaded<T>(val data: List<T>): PaginationViewState<T>()
data class DataLoadedFromCache<T>(val data: List<T>): PaginationViewState<T>()
data class Failure<T>(val e: Throwable): PaginationViewState<T>()
}
密封类分页视图状态{
object LoadingFirstPage:PaginationViewState()//不起作用
对象加载页面:PaginationViewState()//不起作用
数据类DataLoaded(val数据:列表):PaginationViewState()
数据类DataLoadedFromCache(val数据:列表):PaginationViewState()
数据类失败(val e:Throwable):分页ViewState()
}
您不能这样做,因为对象是一个单例对象,它不能在不为type参数提供具体类型的情况下继承泛型类
您只能定义一个对象
用某种类型替换T
:
sealed class PaginationViewState<T> {
object LoadingFirstPage: PaginationViewState<Any>()
//...
}
密封类分页视图状态{
对象加载首页:PaginationViewState,带有类PaginationViewState
和对象…:PaginationViewState
或类PaginationViewState
和对象…:PaginationViewState
(但这限制了T
可以在类中出现的位置),或在要使用对象的位置使用星形投影:例如,使函数接受PaginationViewState
,然后可以使用具有任何T
的对象。它确实有效。您没有指定T
应该是什么,而是将T
作为不存在的类型传递。改为尝试一个类型。作为T
>是视图状态保存的数据类型,我认为正确的解决方案是使用LoadingFirstPage
和LoadingPage
类而不是对象。感谢您的回复。但在我的情况下,它不起作用,因为我无法定义具有所需类型的类PaginationViewState=PaginationViewState.LoadingFirstP年龄
。我现在还是坚持常规课程。