fre*_*low 15 java foreach iterator enumeration adapter
我有一个实现Enumeration<T>
接口的类,但Java的foreach循环需要Iterator<T>
接口.是否有一个Enumeration
到Iterator
Java的标准库适配器?
Boz*_*zho 11
您需要一个所谓的"适配器",以适应Enumeration
其他不兼容的Iterator
.Apache commons-collections有EnumerationIterator
.用法是:
Iterator iterator = new EnumerationIterator(enumeration);
Run Code Online (Sandbox Code Playgroud)
一)我敢肯定你的意思是Enumeration
,不是Enumerator
的b)番石榴提供了一个辅助方法Iterators.forEnumeration(enumeration)
生成从枚举迭代器,但不会帮助你;因为你需要一个Iterable
(迭代器的供应商),而不是Iterator
C)你可以用这个助手类做到这一点:
public class WrappingIterable<E> implements Iterable<E>{
private Iterator<E> iterator;
public WrappingIterable(Iterator<E> iterator){
this.iterator = iterator;
}
@Override
public Iterator<E> iterator(){
return iterator;
}
}
Run Code Online (Sandbox Code Playgroud)
现在您的客户端代码如下所示:
for(String string : new WrappingIterable<String>(
Iterators.forEnumeration(myEnumeration))){
// your code here
}
Run Code Online (Sandbox Code Playgroud)
但值得努力吗?