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年龄
。我现在还是坚持常规课程。