来自Java的条件提取值可选

Web*_*ser 1 java optional

我试图找到使用Java最简洁(和有意义)的方法,Optional从a读取第一个值Optional<String>并返回String(如果存在),或返回"NOT_FOUND".这是我正在使用的代码:

public static String getValue(Optional<String> input) {
    return input.ifPresent(val -> val.get()).orElse("NOT_FOUND")
}
Run Code Online (Sandbox Code Playgroud)

Optional的方法显然有非常特殊的用途,但API让我感到困惑.

更新(4/13/2018): 我的问题中的代码不正确,因为如果我认为val是Optional中的值,那么val.get()没有任何意义.谢谢你指出这一点,@ okttman.

另外,我在接受的答案的注释中添加了我的问题的另一部分,即我需要一种方法来操作String值,如果存在,在返回之前.将orElse("NOT_FOUND")仍然适用,如果选不包含值.那么OptionalAPI 的可接受用途是什么来实现以下目标呢?

public static String getValue(Optional<String> input) {
    return input.isPresent() ? input.get().substring(0,7).toUpperCase() : "NOT_FOUND";
}
Run Code Online (Sandbox Code Playgroud)

@Aominè的回答和后续评论都涉及这个问题的两个部分.

Ous*_* D. 6

您所要做的就是将您的退货声明更改为:

return input.orElse("NOT_FOUND");
Run Code Online (Sandbox Code Playgroud)

这将返回Optional中的对象if if present返回"NOT_FOUND".

也就是说,我会避免使用Optional作为参数.看到这里.