【问题标题】:How do I use the generic type T with Retrofit?如何在 Retrofit 中使用泛型类型 T?
【发布时间】:2019-01-25 10:00:35
【问题描述】:

我想在Retrofit中使用T,但不知道如何在Retrofit.create(X.class)方法中设置T。

public interface SupportService<T> {
    @GET
    Flowable<BaseResponse<T>> getApi(@Url String url, @Query("data") JsonObject jsonObject);
}

HttpRetrofit.getInstance()
                .getRetrofit(this)
                .<SupportService<T>>create(SupportService.class)
                .getApi("",null)
public class BaseResponse<T>{
    public int code;
    public String message;
    public T data;   
}

【问题讨论】:

  • 这一行出现错误.. >create(SupportService.class)
  • 你想做什么?可能只是看看这个。它可能会帮助你。 github.com/sushildlh/Modules/wiki/Retrofit
  • 我知道如何使用改造。但我只想在 Api 界面中使用 T 。像公共接口 SupportService {}。似乎 T 在改造创建(ApiInterface.class)时会出错。就像上面的代码一样。
  • 是的,它会给你错误。 Bcoz square 无法预测您的情况。

标签: android generics retrofit


【解决方案1】:

“T”保留您选择的通用类型。在改造中,您可以根据 api 响应定义数据模型类,例如,如果您使用 GSON 作为序列化库,则使用 @SerializedName 注释。该“T”类型将是为 api 响应定义的类。 Here你可以找到一个关于改造的简单入门教程。

【讨论】:

  • 是不是说我不应该在api接口中使用T?如果我想使用,我该怎么办?例如在你的 APIInterface 类中,我如何添加一个 T 呢?
  • 您必须指定一个类型,如果您的响应是 JSON 格式,您可以将 Object 指定为可能的最通用类型
  • 最后我选择用jsonObject代替
  • 如果您可以发布您的 api 的响应,我可以帮助您
  • 嗨,尼古拉·加拉齐。我已经发布了我的回复,你可以试试吗?
猜你喜欢
  • 2020-07-09
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多