我有一个以这种方式公开服务的休息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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)