Re: EnumSet and varargs
Lew wrote:
That would apply to AbstractSet. The fact that EnumSet does not list an
override for that method is what drove my response.
Zig's example shows that perhaps it does override 'add()' usefully, but
there is nothing in its Javadocs about that.
EnumSet is abstract as well. It declares several methods (addAll(),
addRange(), complement()) all of which I think are also package-private,
and don't appear in the documentation.
Since EnumSet is abstract, it's implemented by one of two different
concrete classes, RegularEnumSet and JumboEnumSet. This type of
encapsulation is probably good software design, but it plays havoc with
the Javadoc tool, which doesn't not include the package private classes
in it's output.
Here's a typical invocation. Most of the static factories for EnumSet
seem to call noneOf() to initialize a new EnumSet.
public static <E extends Enum<E>> EnumSet<E>
noneOf(Class<E> elementType) {
Enum[] universe = getUniverse(elementType);
if (universe == null)
throw new ClassCastException(elementType + " not an enum");
if (universe.length <= 64)
return new RegularEnumSet<E>(elementType, universe);
else
return new JumboEnumSet<E>(elementType, universe);
}
Here's the methods I found in RegularEnumSet which Joshua Bloch overrode:
class RegularEnumSet<E extends Enum<E>> extends EnumSet<E> {
public Iterator<E> iterator() {
public int size() {
public boolean isEmpty() {
public boolean contains(Object e) {
public boolean add(E e) {
public boolean remove(Object e) {
public boolean containsAll(Collection<?> c) {
public boolean addAll(Collection<? extends E> c) {
public boolean removeAll(Collection<?> c) {
public boolean retainAll(Collection<?> c) {
public void clear() {
public boolean equals(Object o) {
}
I did find one site that lists the Java doc for this class:
<http://www.docjar.com/docs/api/java/util/RegularEnumSet.html>
I think Sun should consider including Java docs for those Enum classes
in their Java doc listings, like docjar.com does.