我写了一个简短的测试类进行测试(可能会猜到),但找不到从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();
谢谢!
答案 0 :(得分:1)
File file = new File(myFile);
Optional<BufferedReader> reader;
简单来说,这没有任何意义。 Optional的意思是表达:您拥有“某物”,并且它可以存在或缺失。但是您不能使用它直接从该Optional对象“保持阅读”。可选的只是包装器,可以帮助您避免传递null
。
从这个角度来看,“可选”不是阅读的来源。如果有的话,您可以使用Optional,以便其他人可以确定:有一个阅读器,因此,请从该阅读器中进行阅读。换句话说:您可以if (reader == null)
来代替if (readerOptional.isPresent())
。然后您可以执行someReader = readerOptional.get()
。
但是,正如所说的那样,这样做确实(没有太多)意义。