Generics 为什么可以';我是否将接口用作此Rx变压器的通用类型?
我在Kotlin中有以下数据类作为参考:Generics 为什么可以';我是否将接口用作此Rx变压器的通用类型?,generics,kotlin,rx-java2,Generics,Kotlin,Rx Java2,我在Kotlin中有以下数据类作为参考: interface GenericResponse { val error: Error? fun hasErrorObject(): Boolean = error != null } data class LoginResponse( val name: String, val auth: String, @SerializedName("error") override val error: Error
interface GenericResponse {
val error: Error?
fun hasErrorObject(): Boolean = error != null
}
data class LoginResponse(
val name: String,
val auth: String,
@SerializedName("error") override val error: Error? = null
) : GenericResponse
LoginResponse
实现一般响应
。我以以下方式使用改装API:
@POST("******")
fun createSession(@Body body: LoginBody): Single<Response<LoginResponse>>
如您所见,我必须将响应主体转换为GenericResponse
实例,然后在ExceptionTransformer
中继续登录。我的问题是:有没有办法将返回类型用作GenericResponse
而不是T
(generic)类型?我曾尝试过这样做,但在这样使用时遇到了一些错误:
fun createSession(loginBody: LoginBody): Single<LoginResponse> {
return apiService.createSession(loginBody)
.compose(exceptionTransformers.wrapRetrofitExceptionSingle())
}
fun createSession(loginBody:loginBody):单个{
返回apiService.createSession(loginBody)
.compose(Transformers.wrapreProfiteExceptionSingle()除外)
}
根据您所指定的,似乎T
将始终是GenericResponse
的子类型-添加类型参数约束可能是您想要的
fun <T : GenericResponse> wrapRetrofitExceptionSingle() {
...
}
fun wrapropertofitexceptionsingle(){
...
}
“遇到了许多错误”-您可以指定一个示例吗?
fun <T : GenericResponse> wrapRetrofitExceptionSingle() {
...
}