java - 如何解决减少 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);
新代码是否是旧代码的解决方案?任何人都可以对此进行确认。
解决方案
请注意,a &= b
与a = a & b
which 将具有与实际目的相同的结果a = a && b
(除了与 的值无关的性能a
,b
也将在a & b
while 的情况下进行评估,如果是a && b
,b
则不处理)a
false
在此基础上,您的新代码确实可以成为旧代码的解决方案,前提是您以新代码开头result = Objects.equals(this.exp, systemError.exp);
并以return result;
如果您在理解它时仍有任何问题,请随时告诉我,我将尝试进一步详细说明我的解释。
推荐阅读
- c# - 在项目中手动引用 nuget 安装的 DLL
- amazon-web-services - 处理代码管道时出现错误“文件在工件 [SourceArtifact] 中不存在”
- android-studio - 如何在 Android Studio 中构建 LAPACK
- sql - 如何将函数结果分配给 SELECT 的 WITH 子句中的名称?
- r - 如何使用 rgbif 一次从多个多边形下载发生数据?
- swift - Google 身份验证:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“必须设置presentingViewController。”
- isabelle - Isabelle 终止对包含自身映射的数据类型的函数
- python-3.x - 将 MultiDiGraph 读取为 dict-of-dicts 会忽略 multigraph_input
- php - Laravel:使用 Varnish 和 CSRF 令牌
- powershell - For-each 循环和 IF 语句:检查正在运行的进程 ID 号