+-

我有一个方法,将找到一个运算符并返回新的位置.
public Integer findToken(Character operator) {
try {
return tokenList.stream()
.filter(x -> {
return x.position >= startPosition &&
x.position <= endPosition &&
x.operator == operator;
})
.findFirst().get()
.position;
} catch (Exception ex) {
return null;
}
}
但如果没有匹配,我希望它保持旧的价值.
startPosition = findToken(Operator.value);
我如何返回旧值?我尝试使用方法中的值给出一个新参数,并将其传递给异常,但代码看起来很难看.有没有更好的办法 ?
最佳答案
以这种方式进行分配,除非您将旧值作为参数传递,否则无法进行分配.
您可以做的是更改赋值以使用Optional来处理null情况:
Optional.ofNullable(findToken('*'))
.ifPresent(pos -> startPosition = pos);
此外,使用Optional可能更有意义,使方法findToken可能不返回值更明确:
public Optional<Integer> findToken(Character operator) {
return tokenList.stream()
.filter(x ->
x.position >= startPosition &&
x.position <= endPosition &&
x.operator == operator
)
.findFirst()
.map(t -> t.position);
}
在这种情况下,任务将是:
findToken('*').ifPresent(pos -> startPosition = pos);
点击查看更多相关文章
转载注明原文:java – 如果没有匹配项,则返回方法中的默认值 - 乐贴网