簡體   English   中英

記錄大 if(.. ||..) 語句的真實條件

[英]Logging true condition of big if(.. || ..) statement

我使用 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 語句?

如果傳遞給它的booleantrue ,則您可以使用輔助記錄器方法將給定消息寫入日志:

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...;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM