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