相关疑难解决方法(0)

为什么EnumSet有很多重载的"方法"?

在浏览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)
Run Code Online (Sandbox Code Playgroud)

然后用另一个重载方法 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;
}
Run Code Online (Sandbox Code Playgroud)

当这个varargs可以处理其他实现时,为什么这个方法会以这种方式重载?这有什么具体原因吗?

我曾经历过同样的Javadoc,但我找不到任何令人信服的解释.

java collections enumset

33
推荐指数
4
解决办法
1135
查看次数

为什么在Java Stream接口中重载()的varargs方法?

接口有两个重载方法of().其中一个是变量方法,而另一个是一个参数.

单参数方法是一种性能优化,而不是将一个参数传递给变量方法?如果是这样,它如何提高性能?可以问这个empty()方法的相同问题,这似乎是围绕变量的语法糖of().

我看到这些方法的实现方式不同,显然差别在于如何Spliterator实例化; 但这为StreamAPI 提供了什么优势?

java overloading variadic-functions java-stream spliterator

5
推荐指数
2
解决办法
377
查看次数