Я просмотрел некоторый код JAVA, созданный Google, и нашел ImmutableSet: http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ImmutableSet.html
Они реализовали метод of() несколькими другими способами:
public static <E> ImmutableSet<E> of(E e1, E e2);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4, E e5);
public static <E> ImmutableSet<E> of(E... elements);
Я проверил реализацию, которая находится здесь: https://code.google.com/p/google-collections/source/browse/trunk/src/com/google/common/collect/ImmutableSet.java
Есть метод create со следующей сигнатурой:
private static <E> ImmutableSet<E> create(E... elements)
который обертывает
private static <E> ImmutableSet<E> create(Iterable<? extends E> iterable, int count);
метод. Публичные методы просто передают параметры подписанному методу create(E... elements), который, наконец, вызывает другой метод создания.
Я предполагаю, что общедоступность методов с фиксированным количеством параметров не нужна, поскольку у нас есть метод of(E... elements).
Мой вопрос в том, почему они так поступили? Представление? Или это узор?
Спасибо.