コードをリファクタリングして、次のようにします。
RecordReader recordReader;
Processor processor;
public void processRecords() {
Record record;
while ((record = recordReader.readRecord()) != null) {
processor.processRecord(record);
}
}
もちろん、その場合、このクラスに正しいレコードリーダーを何らかの方法で挿入する必要がありますが、それは問題にはなりません。
RecordReader の 1 つの実装は次のようになります。
class BufferedRecordReader implements RecordReader
{
BufferedReader in = null;
BufferedRecordReader(BufferedReader in)
{
this.in = in;
}
public Record readRecord()
{
String line = in.readLine();
if (line == null) {
return null;
}
Record r = new Record(line, in.readLine());
return r;
}
}