gpt4 book ai didi

java - 如果没有匹配项,则在方法中返回默认值

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:14 25 4
gpt4 key购买 nike

我有一个方法可以找到运算符并返回新位置。

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 - 如果没有匹配项,则在方法中返回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com