首页 > 解决方案 > 如何解决减少 java 中表达式中使用的条件运算符 (5) 的数量(最多允许 3 个)的声纳问题

问题描述

ObjectTest systemError = (ObjectTest ) o;
//New Code 
result &= Objects.equals(this.exp1, systemError.exp1);
result &= Objects.equals(this.exp2, systemError.exp2)  ;
result &= Objects.equals(this.exp3, systemError.exp3);
result &= Objects.equals(this.exp4, systemError.exp4);
result &= Objects.equals(this.exp5, systemError.exp5) ;
result &= Objects.equals(this.exp6, systemError.exp6);
return result;
//Old Code
return Objects.equals(this.exp, systemError.exp) &&
Objects.equals(this.exp1, systemError.exp1) &&
Objects.equals(this.exp2, systemError.exp2) &&
Objects.equals(this.exp3, systemError.exp3) &&
Objects.equals(this.exp4, systemError.exp4) &&
Objects.equals(this.exp5, systemError.exp5) &&
Objects.equals(this.exp6, systemError.exp6);

新代码是否是旧代码的解决方案?任何人都可以对此进行确认。

标签: javasonarqube

解决方案


请注意,a &= ba = a & bwhich 将具有与实际目的相同的结果a = a && b(除了与 的值无关的性能ab也将在a & bwhile 的情况下进行评估,如果是a && bb则不处理)afalse

在此基础上,您的新代码确实可以成为旧代码的解决方案,前提是您以新代码开头result = Objects.equals(this.exp, systemError.exp);并以return result;

如果您在理解它时仍有任何问题,请随时告诉我,我将尝试进一步详细说明我的解释。


推荐阅读