Java开发规范01 - 集合篇_Arrays.asList 坑
生活随笔
收集整理的這篇文章主要介紹了
Java开发规范01 - 集合篇_Arrays.asList 坑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Arrays.asList 規則
- Code
- add - java.lang.UnsupportedOperationException
- 源碼分析
- remove - java.lang.UnsupportedOperationException
- clear - java.lang.UnsupportedOperationException
Arrays.asList 規則
我們先看下阿里巴巴編程規范中的一條規則:
Code
add - java.lang.UnsupportedOperationException
/*** Arrays.asList的注意事項*/public static void arraysAsList(){List<Integer> list = Arrays.asList(1, 2,3,4,5);System.out.println(list.contains(2));System.out.println(list.contains(6));//使用工具類 Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方法,// 它的 add/remove/clear 方法會拋出 UnsupportedOperationException 異常list.add(8);System.out.println(list.contains(8));}額 調用 add方法向集合中添加數據,居然拋出了 java.lang.UnsupportedOperationException 異常
源碼分析
返回一個 new ArrayList<>(a)
點擊去,然后發現居然不是我們常用的 java.util.ArrayList
發現端倪了么?
它也繼承了AbstractList類,
重寫了抽象父類AbstractList的很多方法,比如剛剛使用的contains方法,但是卻沒有重寫add方法
所以在調用add方法時才會拋出java.lang.UnsupportedOperationException異常。
同樣的 remove 、 clear亦然
remove - java.lang.UnsupportedOperationException
clear - java.lang.UnsupportedOperationException
總結
以上是生活随笔為你收集整理的Java开发规范01 - 集合篇_Arrays.asList 坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 8 - 自定义Collect
- 下一篇: Java 8 - 正确高效的使用并行流