将对象定义为通用密封类的子类型?

时间:2018-04-20 11:22:24

标签: kotlin

我有以下类层次结构:

sealed class SubscriptionServiceResponse<T>
data class UserRecognized<T>(val recognizedUser: RecognizedUser, val response: T) : SubscriptionServiceResponse<T>()
data class UserNotRecognized<T>(val ignored: Boolean = true) : SubscriptionServiceResponse<T>()

但是,我更喜欢UserNotRecognized只是object - 类似于:

object UserNotRecognized : SubscriptionServiceResponse()

ignored参数就在那里,因为我无法创建没有任何参数的数据类。

有没有办法将object定义为通用sealed class的子类型?

2 个答案:

答案 0 :(得分:4)

您可以使用AnyAny?,仅忽略非响应的泛型类型。从你的问题来看,我明白你并不关心对象的泛型类型,所以也许你根本不关心它

这样的事情:

sealed class SubscriptionServiceResponse<T> {
    data class UserRecognized<T>(val bool: Boolean) : SubscriptionServiceResponse<T>()
    object UserNotRecognized : SubscriptionServiceResponse<Any?>()
}

答案 1 :(得分:1)

您可以像这样指定泛型类型:

object UserNotRecognized : SubscriptionServiceResponse<Any>()