使用Retrofit请求数据,响应成功后返回的数据报错
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to kbean.mine.BankBean
打断点后,可以看到这里的响应数据里面的集合并不是想要的类型,而是LinkedTreeMap的集合。
下面是我的实体类的类型,可以推断出,Retrofit使用Gson解析时候并没有看出来MultiPageBean中的list集合是什么类型的。也就是并没有把ResponseListBean中的泛型T的实际的类型传递到内部类中。
public class ResponseListBean<T> extends ResponseBaseBean{
private MultiPageBean data;
public MultiPageBean getData() {
return data;
}
public void setData(MultiPageBean data) {
this.data = data;
}
public class MultiPageBean{
int total;
List<T> list;
int pageNum;
int pageSize;
int pages;
int size;
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
}
下面是改造后的代码
也就是把实际类型传递到内部类中,这样就不会报错了。