インスタンスを処理するクラス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 では、このコードはあまりにも「うるさい」のではないでしょうか?