インスタンスを処理するクラスPoint
と関数があるとしますPoint
クラスポイント{プライベートファイナルint x、y; ... } ... void handlePoints(Iterable<Point> points) { for (Point p: points) {...} }
今、私はファイルから読みたいと思いpoints
ます。ファイルの各行には 2 つの数値が含まれているためpoint
、行から を作成する関数 (「ファクトリー メソッド」) があります。
ポイント makePoint(文字列行) { ... }
私は今どうすればいい?ファイルをリストに読み取り、関数をpoints
呼び出す関数を作成できhandlePoints
ます。
List<Point> readPoints(BufferedReader reader) {...} // ここで makePoint を使用 void handlePoints(BufferedReader リーダー) { List<Point> ポイント = readPoints(リーダー); handlePoints(ポイント); }
残念ながら、この関数はメモリ内にポイントの不要なリストを作成するため、特に洗練されているようには見えません。
イテレータを使用するほうがよいのではないでしょうか?
void handlePoints(Iterator<Point> points) {...} Iterator<Point> readPoints(BufferedReader reader) {...} // ここで makePoint を使用 void handlePoints(BufferedReader リーダー) { Iterator<Point> points = readPoints(リーダー); handlePoints(ポイント); }
それは理にかなっていますか?Java では、このコードはあまりにも「うるさい」のではないでしょうか?