【问题标题】:Type inference failed. Expected type mismatch类型推断失败。预期类型不匹配
【发布时间】:2020-10-31 15:08:18
【问题描述】:

下面的代码显示了错误。类型推断失败。预期类型不匹配必需Response<BaseResponse<Any>>! 找到Response<BaseResponse<RetriveUserInfoResponse>!>!

`when`( mockIOnboardingService.validateCustomerIdentity(customerType.toLowerCase(), ValidateCustomerRequest(customerId, documentType, "243546", tyc)))
.thenReturn(Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432")))) //--> Here the error

这是 validateCustomerIdentity 方法

@POST(ApiConstants.bffOnboardingPath + ApiConstants.pathRetriveUserInfo)
    suspend fun validateCustomerIdentity(
        @Header(ApiConstants.headerXflowService) customerType : String,
        @Body body: ValidateCustomerRequest
    ): Response<BaseResponse<Any>>

如您所见,它返回BaseResponse&lt;Any&gt;。为什么 Android Studio 将 BaseResponse&lt;RetriveUserInfoResponse&gt;! 显示为错误

这是 RetrieveUserInfoResponse 数据类

data class RetriveUserInfoResponse(
    @SerializedName("phone")
    val phone: String
)

【问题讨论】:

    标签: kotlin generics covariance


    【解决方案1】:

    这个问题是Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432")))产生一个Response&lt;BaseResponse&lt;RetriveUserInfoResponse&gt;&gt;,它不是Response&lt;BaseResponse&lt;Any&gt;&gt;的同一类型(或子类型)。

    您可以通过将RetriveUserInfoResponse 转换为Any 来修复它:

    Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432") as Any))
    

    或者将validateCustomerIdentity()的返回类型更改为Response&lt;out BaseResponse&lt;out Any&gt;&gt;,因为Response&lt;BaseResponse&lt;RetriveUserInfoResponse&gt;&gt;Response&lt;out BaseResponse&lt;out Any&gt;&gt;的子类:

    @POST(ApiConstants.bffOnboardingPath + ApiConstants.pathRetriveUserInfo)
    suspend fun validateCustomerIdentity(
        @Header(ApiConstants.headerXflowService) customerType : String,
        @Body body: ValidateCustomerRequest
    ): Response<out BaseResponse<out Any>>
    

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多