如何使用Optional进行空检查

时间:2018-03-08 11:19:31

标签: java

我有以下方法

public static String convertThreeLetterWordToUpper(String str) {
    String result = Arrays.stream(
            str.split(" ")).map(s-> checkLength(s)).collect(Collectors.joining(" "));
    return result;
}

如何在不执行空检查的情况下检查str是否为空,并返回结果的可选。

1 个答案:

答案 0 :(得分:0)

您可以在Optional.ofNullable中包装orignal字符串。假设checkLength返回一个字符串,则下面的返回类型为Optional<String>

Optional.ofNullable(str)
    .map(s -> Arrays.stream(s.split(" "))
                .map(string -> checkLength(string)) 
                .collect(Collectors.joining(" ")));

如果您有要返回的默认返回值,则可以链接orElse()或者可以使用orElseThrow()抛出异常。

String result = Optional.ofNullable(str)
     .map(...)
     .orElse("someDefault");
     //.orElseThrow(() -> new RuntimeException()); Or whatever makes sense