java - 记录大 if(.. || ..) 语句的真实条件
问题描述
我使用 Java,我想在日志中确定哪个语句导致条件为真。如果有很多 OR,我会变得很大。如下所示:
if (StringUtils.isTrue(foo.getArg1)
|| StringUtils.isTrue(foo.getArg1)
|| StringUtils.isTrue(foo.getArg2)
|| foo.getArg3.equals("T")
|| foo.getList1.isEmpty()
|| //and so on...) {
return true; }
我想得到类似的东西:
if (StringUtils.isTrue(foo.getArg1)) {
log.info("Arg1 made statement true")
return true;
}
if (StringUtils.isTrue(foo.getArg2)) {
log.info("Arg2 made statement true")
return true;
}
if (foo.getList1().isEmpty()) {
log.info("List1 made statement true")
return true;
} //etc...
是否有任何棘手的方法可以以更通用的方式实现这样的效果,而无需大量 if 语句?
解决方案
boolean
如果传递给它的是,您可以有一个辅助记录器方法将给定消息写入日志true
:
public boolean static logIfTrue (boolean value, String msg) {
if (value) {
log.info(msg);
}
return value;
}
并使用它:
return logIfTrue(StringUtils.isTrue(foo.getArg1),"Arg1 made statement true") ||
logIfTrue(StringUtils.isTrue(foo.getArg2),"Arg2 ...") ||
logIfTrue(foo.getArg3.equals("T"),"...") ||
logIfTrue(foo.getList1.isEmpty(),"...") ||
//and so on...;
推荐阅读
- sas - SAS LIBNAME 包含数据集文件夹的目录
- html - 如何在我的移动徽标下添加按钮?
- ios - 可见工件使用强光传输模式将两个 UIImages 与 UIGraphicsContext 合成
- php - 无法从多维数组中删除空键
- javascript - 为什么调试器中未定义“this”但可在 console.log 中打印?
- c - 从 C 中的用户输入中搜索字符串数组
- javascript - 模态上的关键帧干扰全屏视频
- python - 创建一个内容大于 2GB 的张量原型
- grid - 从 DevExpress 的 Grid Control 中的任意单元格获取数据
- mysql - 获取:java.sql.SQLException:未知系统变量“语言”春季启动