在Kotlin中,如何从Iterable<T>
或Sequence<T>
获得Stream<T>
?
在Java中,我可以通过以下方法获得Iterable<T>
,但是等效的Kotlin代码不起作用:
final Stream<T> s = /*get Stream*/;
final Iterable<T> i1 = s::iterator;
final Iterable<T> i2 = () -> s.iterator();
答案 0 :(得分:2)
由于Kotlin具有一流的函数类型,仅提供lambda或方法引用不足以将表达式强制转换为某些Java接口。但是,有一种简洁的语法可以实现单一抽象方法的接口:
val s: Stream<T> = /* get a stream */
val i = Iterable { s.iterator() }