首页 > 解决方案 > 将 List.of 用于具有单个元素而不是 Collections.singletonList 的不可变列表

问题描述

Java 9 引入了工厂方法来使用List.of.

哪个更适合创建一个元素的不可变列表?

    List<String> immutableList1 = List.of("one");
    List<String> immutableList2 = Collections.singletonList("one");

标签: javajava-9

解决方案


更喜欢使用工厂方法

List<String> immutableList1 = List.of("one");

因为它们不允许空元素是好处之一,而且List接口中的工厂方法也可以方便地添加多个对象并创建不可变的 List

它们不允许空元素。尝试使用 null 元素创建它们会导致 NullPointerException。

哪里Collections.singletonList允许null

List<String> l = Collections.singletonList(null);
System.out.println(l);   //[null]

推荐阅读