java.lang.ClassCastException com.google.gson.internal.LinkedTreeMap ca
阿新 • • 發佈:2019-01-26
使用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;
}
}
}
下面是改造後的程式碼
也就是把實際型別傳遞到內部類中,這樣就不會報錯了。