当Java 9集合工厂支持varargs时,为什么每个参数都有单独的方法

问题描述

在Java 9 ListSetMap接口中,我们具有of方法,该方法支持varargs(static <E> List<E> of(E... elements)),因此具有单独的目的是什么具有一到十个参数的方法

static <E> List<E> of(E e1) //Returns an unmodifiable list containing one elements.
static <E> List<E> of(E e1,E e2) //Returns an unmodifiable list containing two elements.
static <E> List<E> of(E e1,E e2,E e3) //Returns an unmodifiable list containing three elements.
static <E> List<E> of(E e1,E e3,E e4) //Returns an unmodifiable list containing four elements.
static <E> List<E> of(E e1,E e4,E e5) //Returns an unmodifiable list containing five elements.
static <E> List<E> of(E e1,E e5,E e6) //Returns an unmodifiable list containing six elements.
static <E> List<E> of(E e1,E e6,E e7) //Returns an unmodifiable list containing seven elements.
static <E> List<E> of(E e1,E e7,E e8) //Returns an unmodifiable list containing eight elements.
static <E> List<E> of(E e1,E e8,E e9) //Returns an unmodifiable list containing nine elements.
static <E> List<E> of(E e1,E e9,E e10) //Returns an unmodifiable list containing ten elements.

要使用三个以上支持varargs的List.of方法创建列表,请调用new ImmutableCollections.ListN<>(elements);List<E> of(E e1,E e3)List<E> of(E e1,....E e10)也是如此。

支持可变参数的List.of方法的实现

static <E> List<E> of(E... elements) {
    switch (elements.length) { // implicit null check of elements
        case 0:
            @SuppressWarnings("unchecked")
            var list = (List<E>) ImmutableCollections.EMPTY_LIST;
            return list;
        case 1:
            return new ImmutableCollections.List12<>(elements[0]);
        case 2:
            return new ImmutableCollections.List12<>(elements[0],elements[1]);
        default:
            return new ImmutableCollections.ListN<>(elements);
    }
}

支持10个元素的List.of方法的实现。

static <E> List<E> of(E e1,E e10) {
    return new ImmutableCollections.ListN<>(e1,e2,e3,e4,e5,e6,e7,e8,e9,e10);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)