我有一個List (此處稱listA), 是透過Arrays.asList構成的, 然後在某些場合下, 我會往這個listA裡面繼續塞值, 以利用來處理商業邏輯, 可是當條件判斷要往listA裡面塞值的時候, 就出現了以下這個exception:
java.lang.UnsupportedOperationException
查了一下, 才發現透過Arrays.asList建構出來的list, 是fixed-size list, 所以才會塞不進去...
package idv.carl.scjp.collection.list;
import java.util.List;
/**
* @author Carl Lu
*/
public class ListAddDemo {
public static void addToList(String value, List<String> list) {
list.add(value);
}
}
package idv.carl.scjp.collection.list;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* @author Carl Lu
*/
public class ListAddDemoTest {
@Test
public void testAddToNonFixedSizeList() {
List<String> nonFixedSizeList = new ArrayList<>();
nonFixedSizeList.add("Que");
ListAddDemo.addToList("Pa so!!!", nonFixedSizeList);
assertEquals(2, nonFixedSizeList.size());
}
@Test(expected = UnsupportedOperationException.class)
public void testAddToFixedSizeList() {
List<String> fixedSizeList = Arrays.asList("Que", "pa");
fixedSizeList.add("so");
}
}