Java可选用法:Eclipse仍然是demande try-catch块

时间:2014-09-09 13:09:13

标签: java-8 optional

我试图使用Optional Java 8,我遇到了一些问题。

我认为通过使用Optional,不再需要进行存在检查。(如果我错了,请纠正我)。所以我做了以下几点:

public Optional<File> ipModeFile(String ipMode) {
        File file = new File(ipMode);
        if(file.exists()) {
            return Optional.of(file);
        }
        return Optional.empty();
    }

然后我像这样使用它:

if(ipV4ModeFile.isPresent()) {
    File file = ipV4ModeFile.get();
    FileWriter writer;
    writer = new FileWriter(file, false); // Unhandled exception type IOException
    writer.write(TURNOFF_IPV4); 
    writer.close(); 
}

Optional的一个优点是,是否可以省略一些空检查?

1 个答案:

答案 0 :(得分:1)

在您的示例中,FileWriter不是Optional。即使它是,Option type(也许是一种类型)保护再次NullPointerException(不是IOException)。来自Optional Javadoc,

  

容器对象,可能包含也可能不包含非null值。如果存在值,则isPresent()将返回true,get()将返回该值。