gpt4 book ai didi

java - 以 Java 8 风格重构 if-else if 链

转载 作者:行者123 更新时间:2023-12-01 22:37:40 25 4
gpt4 key购买 nike

我有一个带有以下 if-else-if 链的方法:

        if(downstreamActual.getNumber() <= downstreamRecommended.getNumber()){
downstreamActual.setInvalid();
showErrorWindow();
throw new NumberFormatException();
}else if(upstreamActual.getNumber() <= upstreamRecommended.getNumber()){
upstreamActual.setInvalid();
showErrorWindow();
throw new NumberFormatException();
}else if(biUpstreamActual.getNumber() <= biUpstreamRecommended.getNumber()){
biUpstreamActual.setInvalid();
showErrorWindow();
throw new NumberFormatException();
}else if(biDownstreamActual.getNumber() <= biDownstreamRecommended.getNumber()){
biDownstreamActual.setInvalid();
showErrorWindow();
throw new NumberFormatException();
}

每一步我们都做相同的工作(为 boolean 表达式中使用的第一个对象调用相同的方法,调用 showErrorWindow() 并抛出 Exception )

有哪些好的技术,特别是使用 Java 8 来使代码更易于管理?

最佳答案

根据您的评论,我认为您不需要 Java 8 构造。

只需使用一个方法:

 public void validate (NumberTextBox actual, NumberTextBox recommended) 
{
if(actual.getNumber() <= recommended.getNumber()) {
actual.setInvalid();
showErrorWindow();
throw new NumberFormatException();
}
}

然后调用它 4 次:

 validate (downstreamActual,downstreamRecommended);
validate (upstreamActual,upstreamRecommended);
...

由于第一个失败的会抛出异常,从而阻止其余的测试,因此您不需要 if else-if 结构。

关于java - 以 Java 8 风格重构 if-else if 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26648107/

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