通過 Arrays.asList(strArray) 方式,将數組轉換List
通過 Arrays.asList(strArray) 方式,将數組轉換List後,不能對List增删,隻能查改,否則抛異常。
關鍵代碼:List list = Arrays.asList(strArray);
private void testArrayCastToListError() {
String[] strArray = new String[2];
List list = Arrays.asList(strArray);
//對轉換後的list插入一條資料
list.add("1");
System.out.println(list);
}
複制
執行結果:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)
at com.darwin.junit.Calculator.main(Calculator.java:44)
複制
程式在list.add(“1”)處,抛出異常:UnsupportedOperationException。
原因解析:Arrays.asList(strArray)傳回值是java.util.Arrays類中一個私有靜态内部類java.util.Arrays.ArrayList,它并非java.util.ArrayList類。java.util.Arrays.ArrayList類具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,是以調用add()方法會報錯。
使用場景:Arrays.asList(strArray)方式僅能用在将數組轉換為List後,不需要增删其中的值,僅作為資料源讀取使用。