MR-LI_20200908-李伟江
问题
早上有点迷糊,所以在List.of方法这儿有点模糊。
List.of 所返回的List集合是不可变的
晚上回顾的时候看官方文档
在List.of和 List.copyOf静态工厂方法提供了一种方便的方式来创建不可修改的列表。List 这些方法创建的实例具有以下特征:
- 它们是不可修改的。元素无法添加,删除或替换。调用List上的任何mutator方法总是会导致
UnsupportedOperationException
抛出该异常。但是,如果所包含的元素本身是可变的,则可能导致列表的内容似乎发生变化。 - 他们不允许使用
null
元素。尝试使用null
元素创建它们会 导致NullPointerException
。
都是List声明的变量,为什么一个可变,一个不可变。
解决过程
代码证明
List<String> name = new ArrayList<>();
List<String> list = List.of();
System.out.println( name.getClass() );
System.out.println( list.getClass() );
输出结果如下
class java.util.ArrayList
class java.util.ImmutableCollections$ListN
所以,虽然都是List声明的变量,但是指向不同的实例。在ArrayList实现类中,有add方法。但是在ImmutableCollections$ListN中没有实现这样的方法。所以不支持添加、删除、替换操作。
同时发现
在Set.of
和 Set.copyOf
静态工厂方法提供了一种方便的方法来创建不可修改的集合。
不同的是,Set.of
和Set.copyof
方法的返回类型是Set类型。
吐槽
哎,人生地不熟,去医院见不到大夫,出租车还绕路。人与人之间最基本的信任呢?
近期评论