如何从/使用Optional <Reader>读取?

时间:2019-07-26 12:06:44

标签: java java-8 io optional

我写了一个简短的测试类进行测试(可能会猜到),但找不到从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();         

谢谢!

1 个答案:

答案 0 :(得分:1)

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

简单来说,这没有任何意义。 Optional的意思是表达:您拥有“某物”,并且它可以存在或缺失。但是您不能使用它直接从该Optional对象“保持阅读”。可选的只是包装器,可以帮助您避免传递null

从这个角度来看,“可选”不是阅读的来源。如果有的话,您可以使用Optional,以便其他人可以确定:有一个阅读器,因此,请从该阅读器中进行阅读。换句话说:您可以if (reader == null)来代替if (readerOptional.isPresent())。然后您可以执行someReader = readerOptional.get()

但是,正如所说的那样,这样做确实(没有太多)意义。