第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 List<Object> 轉(zhuǎn)換為 List<T>?

如何將 List<Object> 轉(zhuǎn)換為 List<T>?

ibeautiful 2021-08-19 16:45:16
這是將改造響應(yīng)作為對象獲取的代碼。下面的方法工作正常,但我需要一個通用函數(shù)來執(zhí)行上述功能,即類名可能會有所不同。(例如)票,價格,代幣,這樣的約會:processGETRequest(AppController.getApiHelper().searchTickets(from, to), new RetrofitListener() {    @Override    public void onSuccess(Object object) { }    @Override    public void onSuccess(List<Object> object) {        // Here I'm getting retrofit response as a object //        if (object != null) {            // Below method is working fine //            List<Ticket> ticketList = new ArrayList<>();            for (Object result : object) {                String json = new Gson().toJson(result);                Ticket model = new Gson().fromJson(json, Ticket.class);                ticketList.add(model);            }            // I need an one common function for performing above functionality            // i.e the Class name may vary.. (e.g) Ticket, Price, Token, Appointment like this.        }    }    @Override    public void onError(String error) {        Log.d("error: ", " " + error);    }}, false);該RetrofitListener接口很簡單:public interface RetrofitListener {    void onSuccess(Object object);    void onSuccess(List<Object> object);    void onError(String error);}
查看完整描述

3 回答

?
繁星淼淼

TA貢獻1775條經(jīng)驗 獲得超11個贊

您可以使用類似于以下內(nèi)容的靜態(tài)函數(shù):


static <T> List<T> toList(List<Object> object, Class<T> desiredClass) {

    List<T> transformedList = new ArrayList<>();

    if (object != null) {

      for (Object result : object) {

          String json = new Gson().toJson(result);

          T model = new Gson().fromJson(json, desiredClass);

          transformedList.add(model);

      }

    }

    return transformedList;

}

基本上,您只需要確保提供所需的類型(例如desiredClass)并在fromJson.


示例用法:


List<Ticket> ticketList = toList(object, Ticket.class);

List<Price> priceList = toList(object, Price.class);

請注意,通過將 移動object != null到toList-method 中,您無需關(guān)心傳遞給該方法的內(nèi)容。作為回報,您至少會得到一個空列表。


查看完整回答
反對 回復 2021-08-19
?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

您可以轉(zhuǎn)換代碼段


if (object != null) { 

                        List<Ticket> ticketList = new ArrayList<>();

                        for (Object result : object) {

                            String json = new Gson().toJson(result);

                            Ticket model = new Gson().fromJson(json, Ticket.class);

                            ticketList.add(model);

                        }    

                    }

像這樣的泛型


<T> void check(Class<T> type, List<Object> object) {

        List<T> ticketList = new ArrayList<>();

        for (Object result : object) {

            String json = new Gson().toJson(result);

            T model = new Gson().fromJson(json, type);

            ticketList.add(model);

        }

    }


查看完整回答
反對 回復 2021-08-19
?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

<T> List<T> getList(Class<T> type, List<Object> object) {

    return object.stream()

            .map(result -> new Gson().toJson(result))

            .map(new Gson().fromJson(json, type))

            .collect(Collectors.toList());

}


List<Ticket> ticketList = getList(Ticket.class, object);

這將完成您的 for 循環(huán)所做的工作。


查看完整回答
反對 回復 2021-08-19
  • 3 回答
  • 0 關(guān)注
  • 1738 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號