kotlin中的密封类泛型与内部类无关
我想要一个ApiResponse
与一些泛型类型知道什么类型将包含在成功的情况下,如:;;
我的意思是,我假装是:
sealed class ApiResponse<T> { class Success<T>(body: T) } fun getUsers(): ApiResponse<List<User>>
然后当我调用getUsers
我知道它可能包含一个ApiResponse.Success<List<User>>
。
但是 ApiResponse<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