在浏览该EnumSet<E>
of
方法时,我看到了方法的多个重载实现of
:
public static <E extends Enum<E>> EnumSet<E> of(E e)
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
.
.
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
然后是另一个重载方法varargs
public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) {
EnumSet<E> result = noneOf(first.getDeclaringClass());
result.add(first);
for (E e : rest)
result.add(e);
return result;
}
当这个可变参数可以处理其他实现时,为什么这个方法会以这种方式重载?这有什么具体原因吗?
我已经阅读了相同的 Javadoc,但找不到任何令人信服的解释。