You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:59:58