我只是看着番石榴ImmutableList
,我注意到这个of()
方法超载了12次.
在我看来,他们所需要的只是:
static <E> ImmutableList<E> of();
static <E> ImmutableList<E> of(E element); // not even necessary
static <E> ImmutableList<E> of(E... elements);
Run Code Online (Sandbox Code Playgroud)
有这么多类似变化的原因是什么?
Java 9附带了用于创建不可变列表的便捷工厂方法.最后,列表创建非常简单:
List<String> list = List.of("foo", "bar");
Run Code Online (Sandbox Code Playgroud)
但是这个方法有12个重载版本,11个有0到10个元素,另一个有var args.
static <E> List<E> of(E... elements)
Run Code Online (Sandbox Code Playgroud)
同样是与案件Set
和Map
.
由于存在var args方法,有多少11种方法有什么意义呢?
我认为var-args创建一个数组,所以其他11个方法可以跳过创建一个额外的对象,在大多数情况下会有0-10个元素.还有其他原因吗?
自从这个方法
Stream.of(T... values)
Run Code Online (Sandbox Code Playgroud)
包括单个元素的情况,为什么方法:
Stream.of(T t)
Run Code Online (Sandbox Code Playgroud)
还包括在API中?它的目的是什么?什么时候被调用?它与varargs版本有什么不同吗?