我希望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
如果成功,我不知道响应可能包含哪种对象。
我该怎么做?
答案 0 :(得分:3)
您的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