Arrays.asList()方法/适配器模式

2018-12-09  本文已影响0人  烛火下的乌托邦丶

使用工具类Arrays.asList()方法可以很方便的把数组转换成集合
但是转换后不能使用集合修改的相关方法 add/remove/clear等...
它的 add / remove / clear 方法会抛出 UnsupportedOperationException 异常。
asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。 Arrays . asList
体现的是适配器模式,只是转换接口,后台的数据仍是数组。

Arrays.asList()的源码

@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}
ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
}
String[] str = new String[] { "you", "wu" };
List list = Arrays.asList(str);
第一种情况: list.add("yangguanbao");  运行时异常。
第二种情况: str[0] = "gujin"; 那么 list.get(0) 也会随之修改。
上一篇 下一篇

猜你喜欢

热点阅读