<p>ArrayList类目前只是支持迭代器接口,但是不支持枚举,我们目前定义一个ArrayList的枚举适配器ArrayListEnumerator,来实现ArrayList类支持枚举。</p><p>ArrayListEnumerator类中有一个Iterator对象的引用,ArrayListEnumerator类实现Enumeration接口中的方法,但是实际上是用Iterator类的hasNext()和next()方法来实现Enumeration类的hasMoreElements()和nextElement()方法。</p><p> 适配器的思想就是:客户想要实现某一个接口 Enumeration,接口中的方法已知,但是不能直接用(或者不知道怎么用),我们通过定义一个适配器ArrayListEnumerator,通过已知的方法(ArrayListEnumerator类中引用对象Iterator的方法我们会用)来实现接口中的方法。</p>
<pre name="code" class="java">import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class ArrayListEnumerator implements Enumeration {
Iterator iterator;
public ArrayListEnumerator(Iterator iterator) {
this.iterator=iterator;
// TODO Auto-generated constructor stub
}
public boolean hasMoreElements()
{
return iterator.hasNext();
}
public Object nextElement()
{
return iterator.next();
}
public static void main(String []args)
{
ArrayList<String> list=new ArrayList<String>();
list.add("aa");
list.add("bb");
Iterator iterator=list.iterator();
ArrayListEnumerator arrayListEnumerator=new ArrayListEnumerator(iterator);
while(arrayListEnumerator.hasMoreElements())
{
System.out.println(""+arrayListEnumerator.nextElement());
}
}
}