Java9 'asIterator'的Java8等效实现及代码兼容转换求助
Java 9代码转Java 8兼容版本
转换后的完整代码
private static <T> Iterator<T> enumerationToIterator(Enumeration<T> enumeration) { return new Iterator<T>() { @Override public boolean hasNext() { return enumeration.hasMoreElements(); } @Override public T next() { return enumeration.nextElement(); } }; } private static Function<ClassLoader, Stream<URL>> asURLs(String packageDir) { return cl -> { try { Enumeration<URL> resources = cl.getResources(packageDir); Iterator<URL> iterator = enumerationToIterator(resources); return StreamSupport.stream( Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false); } catch (IOException e) { throw new UnhandledIOException(e); } }; }
关键改动说明
- 移除了Java 9特有的
Enumeration.asIterator()方法调用,Java 8的Enumeration接口未提供该方法 - 新增通用工具方法
enumerationToIterator,通过包装Enumeration的hasMoreElements()和nextElement()方法,实现到Iterator的转换,逻辑与原代码的asIterator()完全一致 - 其余业务逻辑保持不变,确保功能和原代码完全匹配
内容的提问来源于stack exchange,提问作者Swapnil Kotwal
相关产品推荐
相关产品推荐

