2017-08-29 28 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