如何读from/with Optional<Reader>?

How to read from/with Optional<Reader>?

我写了一个简短的测试 Class 用于测试(谁会猜到),但找不到读取 Optional<BufferedReader> 的方法。 也许我对 I/O 不够熟悉,但我尝试创建一个 BufferedReader 来读取文件并将其传递给 Optional<BufferedReader>,但它不允许我这样做。 铸造也不起作用。那么,我该如何解决这个问题?

File file = new File(myFile);
Optional<BufferedReader> reader;

这行不通:

reader.read(new FileReader(myFile).read());     

reader = new FileReader(myFile).read();         

谢谢!

File file = new File(myFile);
Optional<BufferedReader> reader;

简单地说,这没有任何意义。 Optional 的要点是表达:你有 "something",它可以存在,也可以缺失。但是您不能直接从该 Optional 对象将它用于 "keep reading"。 Optional 只是一个包装器,可以帮助您避免传递 null

从这个角度来看,Optional 不是阅读的来源。如果有的话,您可以使用 Optional,以便其他人可以确定:有一个 reader,所以让我们从那个 reader 读取。换句话说:你可以做 if (readerOptional.isPresent()),而不是问 if (reader == null)。然后你可以做 someReader = readerOptional.get()

但如前所述,这样做确实(没有太大)意义。