+-
java – 如果没有匹配项,则返回方法中的默认值
我有一个方法,将找到一个运算符并返回新的位置.

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 – 如果没有匹配项,则返回方法中的默认值 - 乐贴网