我有一些代码从 BufferedReader 读取行并从它读取的数据创建一个对象,然后将其发送出去进行处理。这一直持续到 BufferedReader.readLine() 返回 null (即到达文件末尾或套接字关闭等)
我认为围绕它创建一个实现的类可能很有用,Iterable<MyObject>
因此可以使用
IObjectReader objectReader = new MyObjectReader(someBufferedReaderThatExists);
for (IObjectToProcess obj : objectReader) {
processTheObject(obj);
}
因为这可以更容易地注入不同IObjectReader
的对象,这些对象可能会创建返回不同类型的IObjectToProcess
对象。
然而,棘手的一点是实现Iterable.hasNext()
- 我如何判断是否BufferedReader.readLine()
会返回null
而不实际调用它?
(注意:BufferedReader.ready()
不是答案:它只是告诉我读取是否会阻塞,而不是它是否会返回null
)