public class ArrayListTest {
public static void main(String[] args){
Map<String,List<String>> map = new HashMap<>();
map.put("name", Arrays.asList("111","222"));
List list = map.get("name");
//Arrays.asList 不能調用add remove方法
list.add("333");
}
}
調用list.add方法就會報java.lang.UnsupportedOperationException,原因為Arrays.asList()傳回的并不是util包下的ArrayList而是繼承AbstractList的定長ArrayList,是以他沒有add和renmove方法,以下為源碼:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
}
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}