是否有标准方法将Kotlin Sequence转换为java.util.Enumeration?
关于Kotlin Sequence转Java Enumeration的标准库实现问题
你观察得特别准——Kotlin的Sequence和Java的Enumeration确实在懒加载迭代元素的核心逻辑上高度相似,都是按需生成/获取下一个元素,不会一次性加载全部内容。
先直接给你答案:Kotlin标准库目前并没有提供现成的Sequence.toEnumeration()扩展函数。主要原因是Enumeration属于Java早期的迭代接口,现在Java和Kotlin生态里更推荐使用Iterator(以及基于它的Sequence、Iterable等现代API),所以标准库没有特意为这个相对老旧的接口提供转换工具。
不过你自己实现的这个函数完全没问题!它的逻辑非常标准:用Sequence的iterator()来代理Enumeration的两个核心方法,既简洁又能保证行为一致。这里再把你的代码格式化一下,方便查看:
fun <T> Sequence<T>.toEnumeration(): Enumeration<T> { val iterator = this.iterator() return object : Enumeration<T> { override fun hasMoreElements() = iterator.hasNext() override fun nextElement(): T = iterator.next() } }
如果之后你需要反向转换(把Enumeration转成Sequence),也可以用类似的简洁实现:
fun <T> Enumeration<T>.toSequence(): Sequence<T> = generateSequence { if (hasMoreElements()) nextElement() else null }
你的实现已经很完美了,直接用就好~
内容的提问来源于stack exchange,提问作者Martin Eden
相关产品推荐
相关产品推荐

