メソッドを調べている間、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;
}
この varargs が他の実装を処理できたのに、なぜこのメソッドがこのようにオーバーロードされるのでしょうか? これには具体的な理由はありますか?
同じJavadocを調べましたが、説得力のある説明が見つかりませんでした。