为什么番石榴的ImmutableList有这么多的重载of()方法?

我只是看着番石榴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);

有这么多类似变体的原因是什么?

回答:

Varargs和泛型不能很好地配合使用。Varargs方法可能会引发带有通用参数的警告,并且重载会阻止该警告,除非在极少数情况下,您想使用来向不可变列表中添加11个以上的项of()

资料中的评论说:

这些多达十一。在那之后,您仅获得varargs表单,并且可能伴随任何警告。:(

请注意,专门添加了Java

7的@SafeVarargs批注,以消除此类需求。可以使用of(E...)带有注释的单个方法,@SafeVarargs并且不会通过通用参数给出警告。

以上是 为什么番石榴的ImmutableList有这么多的重载of()方法? 的全部内容, 来源链接: utcz.com/qa/408612.html

回到顶部