1. 程式人生 > >java.lang.ClassCastException com.google.gson.internal.LinkedTreeMap ca

java.lang.ClassCastException com.google.gson.internal.LinkedTreeMap ca

使用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; } } }

下面是改造後的程式碼
這裡寫圖片描述

也就是把實際型別傳遞到內部類中,這樣就不會報錯了。