專注Java教育13年 全國咨詢/投訴熱線:400-8080-105
                首頁 hot資訊 Object轉list對象的方法

                Object轉list對象的方法

                更新時間:2022-08-12 10:07:42 來源:動力節點 瀏覽25次

                java中如果需要將一個object轉成list,大部分人會直接使用強制類型轉換:(List) obj這樣。這樣強制轉換編譯會提示Unchecked cast: 'java.lang.Object' to 'java.util.List',編譯器的意思該強制類型轉換并未做類型校驗,強制轉換并不安全,可能會拋出異常導致程序崩潰。有人會建議用@SuppressWarnings("unchecked")解決編譯器警告,這種方法是極為不妥的,因為它只是用來告訴編譯器忽略警告,而警告卻實實在在的存在。

                正確的做法如下:

                public static Object getObj() {
                    List<String> list = new ArrayList<>();
                    list.add("1");
                    list.add("ab");
                    return list;
                }
                public static void main(String[] args) {
                    Object obj = getObj();
                    List<String> result = new ArrayList<>();
                    if (obj instanceof ArrayList<?>) {
                        for (Object o : (List<?>) obj) {
                            result.add(String.class.cast(o));
                        }
                    }
                    result.forEach(System.out::println); // 輸出:1 ab
                }

                Main主函數中的 Object obj模擬了List對象。后續的代碼首先判斷obj是否是List類型,然后使用Class.cast做類型轉換

                如果你想使用更方便的方法,可以直接調用下面的函數。

                public static <T> List<T> castList(Object obj, Class<T> clazz){
                    List<T> result = new ArrayList<>();
                    if(obj instanceof List<?>){
                        for (Object o : (List<?>) obj){
                            result.add(clazz.cast(o));
                        }
                        return result;
                    }
                    return new ArrayList<>();
                }

                它接受兩個參數,一個是obj,即是我們需要轉換的List對象,然后傳入List中元素的class即可。

                使用方法如下:

                public static void main(String[] args) {
                    Object obj = getObj();
                    List<String> list = castList(obj, String.class);
                    list.forEach(System.out::println);
                }

                 

                提交申請后,顧問老師會電話與您溝通安排學習

                免費課程推薦 >>
                技術文檔推薦 >>
                返回頂部
                办公室激情娇喘嗯啊视频软件