为什么 Java 9 添加List.of
了多个签名?
例如,有:
<E> List<E> of(E e1, E e2, E e3)
<E> List<E> of(E e1, E e2)
<E> List<E> of(E e1)
...<E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10)
同时,在同一个 Java 9 中,他们立即添加了:
<E> List<E> of(E... elements)
,它取代了之前的所有方法。那么它们的意义是什么?
杰普269:
Joshua Bloch - Java 高效编程(第 42 条):
用于优化。
需要注意的是,这些方法返回的集合是不可变的。那些。我们可以制作一个有两个字段(第一个和第二个元素)的类,而不是一个数组(它已经是8字节的内存)或另一个结构,并将值存储在这些字段中。相应地,当请求集合的大小时,我们可以立即返回一个常量
2
,而不是通过额外的操作来寻找这个值。等等。实际上,这里有一个来自原始 OpenJdk
List
类的示例<E> List<E> of(E e1, E e2)
PS我可以添加一个有趣的论点。例如,在众所周知的 中,
IntelliJ Idea
有一个优化的实现List
,它只有一个元素。甚至还有 一个视频,其中一位开发人员解释说,他们以这种方式寻求节省内存。