Эквивалентный метод перегрузки зачем нужен?
Я просмотрел код 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), который, наконец, вызывает другой метод create.
Я предполагаю, что публичные методы с фиксированным количеством параметров не нужны, поскольку у нас есть метод of (E ... elements).
Мой вопрос в том, почему они так поступили? Представление? Или это шаблон?
Благодарю.