我只是在看番石榴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);
到底是什么原因导致了这么多类似的变化呢?
可变参数和泛型不能很好地协同工作。可变参数方法可能会导致带有泛型参数的警告,并且重载可以防止该警告,除非在极少数情况下,您想要使用以下命令将超过 11 个项目添加到不可变列表中of()
.
来源中的评论说:
这些最多可达十一个。之后,您将获得 varargs 形式,以及随之而来的任何警告。 :(
请注意,Java 7@SafeVarargs专门添加注释是为了消除此类事情的需要。单个of(E...)
方法注释为@SafeVarargs
可以使用并且不会对通用参数发出警告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)