Java 9 - List类:of()使用varargs重载方法

时间:2018-05-08 00:08:50

标签: java-9

在Java 9中,在List接口下,有一个新的方法(),根据Java文档:

  

List.of()静态工厂方法提供了一种方便的方法   创建不可变列表。

他们使用多达10个参数和一个vararg参数重载了()。 当它们提供一个vararg参数重载方法时,用10个参数重载()的原因是什么呢?enter image description here

1 个答案:

答案 0 :(得分:1)

这是出于性能原因。

首先,将空,一个元素和两个元素列表实现为专用类,它们没有嵌套对象。因此,构建它们是最快的(只涉及一个分配)。

对于更高级别的设备,接口设计人员可能希望保持他们的选择,以便可能实现更多"固定arity"列表类(虽然他们还没有遵循这条路线)。

事实上,"更高的arity"重载被包裹回" varargs"列表构造函数。

参考:https://github.com/dmlloyd/openjdk/blob/7d7fbd09fcfd7f8cd02bf76ce10433ceeb33b3cf/jdk/src/java.base/share/classes/java/util/List.java#L788

相关问题