嗨,我正在与你合作java 8.以下是这种情况:
我有一个AsyncResponse像下面这样的空接口:
package com.personal.carrot.core.models;
public interface AsyncResponse {
}
Run Code Online (Sandbox Code Playgroud)
我有一个模特 APIResponse
package com.personal.carrot.core.models;
import org.codehaus.jackson.annotate.JsonProperty;
public class APIResponse implements AsyncResponse {
@JsonProperty("numberOfFeatures")
public Long numberOfFeatures;
}
Run Code Online (Sandbox Code Playgroud)
最后我有一个服务Retrofit2用来做我的API响应:
public interface APIRepository {
@POST("MYURL")
Call<APIResponse> resolveCounts(@Body HashMap<String, String> body);
}
Run Code Online (Sandbox Code Playgroud)
现在我调用APIRepository如下:
Call<AsyncResponse> request = repository.resolveCounts(payload);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
java:不兼容类型:retrofit2.Call(com.personal.carrot.core.models.APIResponse)无法转换为retrofit2.Call(com.personal.carrot.core.models.AsyncResponse)
它失败了,因为你无法分配Call<APIResponse>给 a Call<AsyncResponse>。泛型类型是不变的。
您可能必须使用APIResponse变量的类型参数:
Call<APIResponse> request = repository.resolveCounts(payload);
Run Code Online (Sandbox Code Playgroud)
这并不是因为您无法设计代码来使用该接口AsyncResponse,而是因为(我在这里假设)框架使用返回类型来处理与内容类型相关的绑定。