Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举接口与向量类_Java_Oop_Vector_Enumeration - Fatal编程技术网

Java 枚举接口与向量类

Java 枚举接口与向量类,java,oop,vector,enumeration,Java,Oop,Vector,Enumeration,我对向量类的枚举接口深感困惑。我知道现在已经有好几天没有用于存储和搜索的软件了,但我仍然对它们感兴趣 我知道的事实: Vector类实现枚举接口,因此它的方法hasMoreElements()和nextElement() Vector类有一个方法elements(),该方法返回Vector类的对象,因此其返回类型为枚举 我感到困惑的是: 假设向量vec=新向量(2,3); vec.elements() Vecotr类不实现枚举。你在哪里看到的,你能分享你的信息来源吗 public class V

我对向量类的枚举接口深感困惑。我知道现在已经有好几天没有用于存储和搜索的软件了,但我仍然对它们感兴趣

我知道的事实:

  • Vector类实现枚举接口,因此它的方法
    hasMoreElements()
    nextElement()

  • Vector类有一个方法
    elements()
    ,该方法返回Vector类的对象,因此其返回类型为枚举

  • 我感到困惑的是:

    假设
    向量vec=新向量(2,3)

    vec.elements()

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

    public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    
    公共类向量
    扩展抽象列表
    实现列表、随机访问、可克隆、java.io.Serializable
    
    此外,该类或接口中并没有一个实现或扩展
    枚举
    接口。

    该类显示该类中实现的接口是
    可序列化、可克隆、可编辑、集合、列表、随机访问

    向量的
    elements()
    方法签名是:
    public Enumeration elements()
    调用 它返回已实现枚举的
    实例,从以下源代码中可以明显看出:

    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");
                }
            };
        }
    
    公共枚举元素(){
    return new Enumeration(){//return implemented Enumeration
    整数计数=0;
    公共布尔值hasMoreElements(){
    返回计数<元素计数;
    }
    公共电子nextElement(){//实现nextElement
    同步(Vector.this){
    如果(计数<元素计数){
    返回元素数据(count++);
    //访问向量元素数据
    //遍历对象数组
    }
    }
    抛出新的NoTouchElementException(“向量枚举”);
    }
    };
    }
    
    你在哪里看到
    向量
    实现了
    枚举
    ?我在一本书中读过它。如果不是这样的话,那你怎么会有枚举向量呢?向量在1998年被ArrayList取代了。如果你真的感兴趣,你应该能够通过阅读代码来回答你自己的问题。如果不是这样,那么这行枚举vec.elements()的意义是什么,这意味着Vector类的elements方法将返回枚举对象。就是这样。@chetanmehta,我已经向您展示了
    elements()
    函数是如何工作的。