2017-08-29 63 views
2

我想有一些泛型类型的ApiResponse知道什么类型将包含在成功的情况下,像:;密封类仿制药不相关的内部类

我的意思是,我假装是:

sealed class ApiResponse<T> { 
    class Success<T>(body: T) 
} 

fun getUsers(): ApiResponse<List<User>> 

,然后当我打电话我知道,它可能包含ApiResponse.Success<List<User>>

但从ApiResponse<T>T是不相关的Success<T>因为我可以写这样的:

sealed class ApiResponse<NotUsed> { 
    class Success<T>(body: T) 
} 

然后我创建一个返回ApiResponse像一个函数:

fun getUsers(): ApiResponse 

我不如果它是成功的,就知道响应可能包含哪种对象。

我该怎么办?

回答

3

Success类不超过范围的被它内部的其他任何方式与您ApiResponse类。如果你想在Success是一个ApiResponse,你应该做这样的事情,这也将涉及通用类型:

sealed class ApiResponse<T> { 
    class Success<T>(body: T) : ApiResponse<T>() // Success extends ApiResponse 
} 

需要注意的是,他们只需要在同一个文件中,不一定嵌套(因为科特林1.1),所以下面也将工作:

sealed class ApiResponse<T> 

class Success<T>(body: T) : ApiResponse<T>() // Success extends ApiResponse