再论列举器
当前位置:以往代写 > JAVA 教程 >再论列举器
2019-06-14

再论列举器

再论列举器

我们此刻可以开始演示Enumeration(列举)的真正威力:将穿越一个序列的操纵与谁人序列的基本布局脱离开。在下面的例子里,PrintData类用一个Enumeration在一个序列中移动,并为每个工具都挪用toString()要领。此时建设了两个差异范例的荟萃:一个Vector和一个Hashtable。而且在它们内里别离填充Mouse和Hamster工具(本章早些时候已界说了这些类;留意必需先编译HamsterMaze.java和WorksAnyway.java,不然下面的措施不能编译)。由于Enumeration埋没了下层荟萃的布局,所以PrintData不知道可能不体贴Enumeration来自于什么范例的荟萃:
 

//: Enumerators2.java
// Revisiting Enumerations
import java.util.*;

class PrintData {
  static void print(Enumeration e) {
    while(e.hasMoreElements())
      System.out.println(
        e.nextElement().toString());
  }
}

class Enumerators2 {
  public static void main(String[] args) {
    Vector v = new Vector();
    for(int i = 0; i < 5; i++)
      v.addElement(new Mouse(i));

    Hashtable h = new Hashtable();
    for(int i = 0; i < 5; i++)
      h.put(new Integer(i), new Hamster(i));

    System.out.println("Vector");
    PrintData.print(v.elements());
    System.out.println("Hashtable");
    PrintData.print(h.elements());
  }
} ///:~

留意PrintData.print()操作了这些荟萃中的工具属于Object类这一事实,所以它挪用了toString()。但在办理本身的实际问题时,常常都要担保本身的Enumeration穿越某种特定范例的荟萃。譬喻,大概要求荟萃中的所有元素都是一个Shape(几许形状),并含有draw()要领。若呈现这种环境,必需从Enumeration.nextElement()返回的Object举办下溯造型,以便发生一个Shape。

    关键字:

在线提交作业