Arv*_*ash 5

表现

下面是Oracle JDK 9 文档的摘录:

为了获得最佳性能,不可变集合存储永不更改的数据集。但是,即使您的数据可能发生变化,您也可以利用性能和节省空间的优势。即使您的数据偶尔发生变化,这些集合也可能比可变集合提供更好的性能。

List#of是静态工厂方法,它提供了创建不可变列表的便捷方法。换句话说,这是创建不可变列表的便捷方法。在 Java-9 之前,这可以通过单独的 API(例如.Collections#unmodifiableList

如果你想获得一个可变列表,你可以ArrayList用这个不可变列表作为参数来实例化一个。

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> mutableList = new ArrayList<>(List.of("A", "B", "C"));
        mutableList.add("D");
        System.out.println(mutableList);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

[A, B, C, D]
Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答“*为什么像...这样的方法返回一个不可变的列表?*” (5认同)