【发布时间】:2015-11-02 15:27:58
【问题描述】:
在通过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;
}
当这个可变参数可以处理其他实现时,为什么这个方法会以这种方式重载?这有什么具体原因吗?
我浏览过同样的Javadoc,但找不到任何令人信服的解释。
【问题讨论】:
-
看起来它只是针对速度进行了优化。
-
优化到像 EnumSet 这样的位集合以作为枚举重新获得某些东西是非常基本的,但在 java 中枚举不仅仅是一个命名数字,
-
可以几乎被视为stackoverflow.com/questions/3737882/…的副本...
标签: java collections enumset