请举例+文字说明,用最通俗易懂的语言来表示,谢谢

解决方案 »

  1.   

    Java的Enumeration(枚举,注释②)便是具有这些限制的一个反复器的例子。除下面这些外,不可再用它做其他任何事情: 
    (1) 用一个名为elements()的方法要求集合为我们提供一个Enumeration。我们首次调用它的nextElement()时,这个Enumeration会返回序列中的第一个元素。 
    (2) 用nextElement()获得下一个对象。 
    (3) 用hasMoreElements()检查序列中是否还有更多的对象。 ②:“反复器”这个词在C++和OOP的其他地方是经常出现的,所以很难确定为什么Java的开发者采用了这样一个奇怪的名字。Java 1.2的集合库修正了这个问题以及其他许多问题。
      

  2.   

    hi,guys,你果然是缺乏C/C++背景的人,呵呵.
    我们最好先从C说起.比如说,我们如何表示星期,或者月份这样的量, 我们当然可以用0,1,2,3,4,5,6
    或者是1-12个月份.这样我们在写程序的时候就得写month = 3;但是有了枚举就不一样了.enum Weekdays
    {
        ... ...
        March = 3,
        ...
    }我们可以这样写:
    month = March; //这样的可读性比较好了.(虽然你不怎么觉得现在)不过我们的month是怎么定义的呢?
    int month? 
    其实这样类型也并不安全啊.最好是
    enum enumMonth
    {
       ...
    };enumMonth month;
    month = March;//这样就好很多了.而且从编译的角度来说,它仅仅是一个常量的集合,通常C理解它们为整数类型.
    它们是可以参与数学运算的.month = March + 1; //4月,其实这样不好,作为C++,也许需要转型的.
    其实Java也有类似的东西,但是是用clss模拟的.class Month
    {
         public final static int March = 3; 
    }仅此而已,当然了,枚举的精髓在于,我所认为的类型安全.因为Java本身缺少type alias这样的机制.所以这样的"枚举"并不会起到实际上的安全的作用.
    在C#中,现在允许我们指定一个枚举变量的sizeof了.
    语法我记不得了,但是你不指定,它就是int的,但是你有机会把它变成一个short或者byte.
    毕竟才12个月,per year.
      

  3.   

    嗯,wait,lz问的是java最新语法的枚举,还是你们几个说的迭代器啊?
      

  4.   

    比如Java中的Vector类, Vector vector = new Vector();
    经过一系列操作后,假设add的都是String类型
    在不调用size()方法时,并不知道这个向量共有多少元素,
    但是可调用elements() 方法,返回一个Enumeration类型的枚举对象
    这个枚举对象就包括了向量中所有的元素,
    比如:
       Enumeration enum = vector.elements();
    while(enum.hasMoreElements()) //如果还有无素,方法返回真.
    {
       String str = (String)enum.nextElement(); // 取下一个元素,相当于 i++ ,而非 ++i;
        // 处理输出
      System.out.println(str);
    }大概就这样,供LZ参考下