android – Retrofit,Generic Call type

android – Retrofit,Generic Call type,第1张

概述我很抱歉,如果我的头衔太模糊,但我找不到更好的. 我有一个以这种方式公开服务的休息Api:/ api / {type} / {id} 4’type’,因此返回4种Class类型. 所有这些类都来自同一个SuperClass 我的问题是我似乎总是要明确命名返回的类: Call<Type1> call = apiInterface.get....Call<Type2> call = apiInter 我很抱歉,如果我的头衔太模糊,但我找不到更好的.

我有一个以这种方式公开服务的休息API:/ API / {type} / {ID} 4’type’,因此返回4种Class类型.

所有这些类都来自同一个SuperClass

我的问题是我似乎总是要明确命名返回的类:

Call<Type1> call = APIInterface.get....Call<Type2> call = APIInterface.get....

等等…

所以现在我做

SuperClass object = null;switch(type){    case TYPE1:       Call<Type1> call = APIInterface.getType1(ID);       call.enqueue(new Callback....{            .......            object = response.body()       }       break;    case TYPE2:       Call<Type2> call = APIInterface.getType2(ID);       call.enqueue(new Callback....{            .......            object = response.body()       }       break;}

这感觉很不对劲.

你有没有办法做得更好,也许是泛型的东西?

谢谢,

解决方法 我最后做的是为我的API类中的所有子类创建一个包装器:

public Call getCourseElement(Type type,String ID){    Call call = null;    switch (type) {        case TYPE1:            call = APIInterface.getType1(ID);            break;        case TYPE2:            call = APIInterface.getType2(ID);            break;        ...    }    return call;}

并以这种方式使用它:

Call call = API.getCourseElement(type,ID);            call.enqueue(new Callback() {                @OverrIDe                public voID onResponse(Response response,Retrofit retrofit) {                     SuperClass superObj = (SuperClass) response.body()                     ...........                }                @OverrIDe                public voID onFailure(Throwable t) {                     ..........                }            });

我有一些未经检查的警告,我仍然有开关.

我想到的另一个解决方案是使用一个自定义的TypeConverter(来自Json响应)创建一个TYPE1 / TYPE2元素并将其发送回SuperClass对象.但我不想测试Json,因为它可以轻松改变.

总结

以上是内存溢出为你收集整理的android – Retrofit,Generic Call type全部内容,希望文章能够帮你解决android – Retrofit,Generic Call type所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1123720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存