我正在使用Retrofit和RxJava与API集成,每个api响应都是这样的:
{"success":true,"message":null,"object":{"bla":"String", "bla1":1}}
唯一改变的是object
,我试图创建一个“ResponseBase”,每个模型都扩展了它,并创建了一个“响应”,这就是api将要返回的内容
public class Response {
public Boolean success;
public String message;
public ResponseBase object;
}
要获取我想要的对象类型,我只需要投射.map
//VehicleResponseModel extends ResponseBase
VehicleResponseModel vec = (VehicleResponseModel) response.getObject();
但是这个错误发生了:
无法将ResponseBase强制转换为VehicleResponseModel
我没有明确的方法来做到这一点。
答案 0 :(得分:2)
使用泛型:
public class Response<T> {
public Boolean success;
public String message;
public T object;
}
并使您的改装返回Response<VehicleResponseModel>
,以便您可以从中检索VehicleResponseModel
答案 1 :(得分:1)
我认为问题出在你的继承模型中:
这应该是你的父类:
If Page.Title = "Home" Then
Message.Visible = True
Else
Message.Visible = False
End If
这可能是其中一个子类(代表包含的数据模型):
public class Response {
public Boolean success;
public String message;
}
然后,当您收到public class SomeResponse extends Response {
public InnerModel object;
public static class InnerModel {
public String bla;
public int bla1;
}
}
的实例时,您可以轻松访问,例如SomeResponse
。
答案 2 :(得分:0)
如果您打算使用泛型,请阅读:Serializing and Deserializing Generic Types
或者你可以选择上面提到的Bartek答案。
public class ResponseBase {
public Boolean success;
public String message;
}
public class VehicleResponseModel extends ResponseBase {
//Your custom vehicle model
}
然后让你的改装界面返回VehicleResponseModel。