tl; dr
キャストするだけで、変換する必要はありません。
にキャストStream < String >しIterable < String >ます。
細部
注意ストリームバックを使用することの危険性を説明するHolgerの回答を参照してくださいIterable。
はい、あなたはIterableから作ることができますStream。
解決策は簡単ですが、明白ではありません。Maurice NaftalinのLambda FAQのこの投稿を参照してください。
iterator()上の方法BaseStream(のスーパークラスStream)を返すIteratorの同じ名前と一致するように起こるiterator()戻す方法Iteratorによって必要とされるIterableインターフェース。メソッドシグネチャが一致します。私たちが実際にキャストすることができるようStreamにIterable、変換は必要ありません。
入力を行います。
String input = "this\n" +
"that\n" +
"the_other";
Stream < String > stream = input.lines() ;
それStream<String>をにキャストしてくださいIterable<String>。
Iterable< String > iterable = ( Iterable < String > ) stream ; // Cast `Stream < String >` to `Iterable < String >`.
結果をテストします。
for ( String s : iterable )
{
System.out.println( "s = " + s );
}
IdeOne.comでこのコードがライブで実行されるのをご覧ください。
s =これ
s =それ
s = the_other
警告ストリームバックのリスクに注意してくださいIterable。Holgerによる正しい回答で説明されています。