有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

列表生成什么类型的列表。Java中的of()

Employee john = new Employee("John", "Brown", 32, 100);
Employee camila = new Employee("Camila", "Smith", 25, 101);
Employee pat = new Employee("Pat", "Hanson", 23, 102);

List<Employee> employeeList = List.of(john, camila, pat);

List.of()方法生成了什么类型的List。它是ArrayList还是LinkedList


共 (4) 个答案

  1. # 2 楼答案

    List<Employee> employeeList = List.of(john, camila, pat);
    

    多少等于

    List<Employee> employeeList = Collections.unmodifiableList(Arrays.asList(john, camila, pat));
    

    若您对List的具体实现心存疑虑,那个么自己动手吧,这样会更好

  2. # 3 楼答案

    你可以看看不同的^{} methods in the OpenJDK source code

    (这种模式显然是受到相应番石榴类的启发。见Why does Guava's ImmutableList have so many overloaded of() methods?

    专用于特定数量参数的方法创建^{}的实例,该实例在内部仅存储一个副本(!)提供了List方法的直接实现来访问数组

    但正如其他人所指出的:确切的类型应该无关紧要

    唯一重要的一点是,返回的列表还实现了^{}。虽然在documentation for unmodifiable lists中似乎没有明确指定,但这是我个人所依赖的。他们永远不会把它变成某种链表之类的

  3. # 4 楼答案

    都不是。根据^{}的文档,它返回:

    Returns an immutable list containing an arbitrary number of elements.

    注意,{}和{}实现的是接口{a2}

    如果我们运行此代码:

    List<Integer> listOf = List.of(1,2,3);
    System.out.println(listOf.getClass());
    

    我们得到:

    class java.util.ImmutableCollections$ListN