0

我对向量类的枚举接口深感困惑。我知道现在没有用于存储和搜索的日子,但仍然对它们感兴趣。

我知道的事实:

  1. Vector 类实现了 Enumeration 接口,因此实现了它的方法hasMoreElements()nextElement().

  2. Vector 类有一个elements()返回 Vector 类对象的方法,因此它的返回类型是 Enumeration。

我很困惑的事情:

假设Vector vec=new Vector(2,3)vec.elements().nextElement()给了我想要的对象,而只是vec.nextElement()未定义,尽管 Vector 类实际上实现了枚举接口,所以为什么它的对象不能直接访问被覆盖的方法。

4

2 回答 2

1

Vecotr类不实现Enumeration。你在哪里看到的,你能分享你的信息来源吗?

public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable

此外,没有一个类或接口实现或扩展Enumeration接口。

于 2013-10-19T14:38:45.180 回答
1

Vector类的JAVA DOC显示该类中实现的接口是Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

Vector 的elements()方法签名是:public Enumeration<E> elements()调用 which 返回一个instance of implemented Enumerationas 从以下源代码中可以明显看出:

public Enumeration<E> elements() {
        return new Enumeration<E>() {  // return implemented enumeration
            int count = 0;

            public boolean hasMoreElements() {
                return count < elementCount;
            }

            public E nextElement() {  // implementing nextElement
                synchronized (Vector.this) {
                    if (count < elementCount) {
                        return elementData(count++); 
                          // accessing vector elements data which 
                         //traverses an array of object
                    }
                }
                throw new NoSuchElementException("Vector Enumeration");
            }
        };
    }
于 2013-10-19T14:40:19.890 回答