为什么番石榴的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