我想要一个ApiResponse
使用一些通用类型来知道成功时将包含什么类型,例如:;
我的意思是,我假装的是:
sealed class ApiResponse<T> {
class Success<T>(body: T)
}
fun getUsers(): ApiResponse<List<User>>
然后当我调用getUsers
时我知道它可能包含 ApiResponse.Success<List<User>>
.
但是 T
来自ApiResponse<T>
与 Success<T>
无关因为我可以这样写:
sealed class ApiResponse<NotUsed> {
class Success<T>(body: T)
}
然后我创建一个返回 ApiResponse
的函数像:
fun getUsers(): ApiResponse
我不知道如果成功的话,响应可能包含哪种对象。
我该怎么做?
最佳答案
您的 Success
类除了在其内部范围之外与您的 ApiResponse
类没有任何关系。如果您希望 Success
成为 ApiResponse
,您应该执行类似以下操作,这也会关联泛型类型:
sealed class ApiResponse<T> {
class Success<T>(body: T) : ApiResponse<T>() // Success extends ApiResponse
}
请注意,它们只需位于同一个文件中,不一定是嵌套的(自 Kotlin 1.1 起),因此以下内容也适用:
sealed class ApiResponse<T>
class Success<T>(body: T) : ApiResponse<T>() // Success extends ApiResponse
关于kotlin - kotlin 中的密封类泛型与内部类无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45944480/