有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java嵌套Ifelse速记

if (getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null) {
  return 100;
}

假设getNo()不是null,这是否意味着如果!compareNo(getNo(), b.getNo())的计算结果为true,则return 100运行

最后一个表达式(在:)后面会发生什么


共 (1) 个答案

  1. # 1 楼答案

    真是一团糟。让我重构一些东西,这样我就能看到发生了什么:

    if (getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null) 
    {
      return 100;
    }
    

    Boolean mainCondition = getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null;
    if (mainCondition) 
    {
      return 100;
    }
    

    Boolean mainCondition;
    if (getNo() != null) {
      mainCondition = !compareNo(getNo(), b.getNo());
    } else {
      mainCondition = getNo() != null;
    }
    if (mainCondition) 
    {
      return 100;
    }
    

    但是如果getNo()null,那么我们发现自己处于else条件下,这将把mainCondition设置为false,所以我们不会return,也就是说,写这篇文章的一个更简单的方法是:

    if (getNo() != null) {
      if (!compareNo(getNo(), b.getNo())) 
      {
        return 100;
      }
    }
    

    或者

    if (getNo() != null && !compareNo(getNo(), b.getNo())) {
      return 100;
    }
    

    答案是肯定的:如果!compareNo(getNo(), b.getNo())为真,那么原始语句将返回100

    至于:之后的部分会发生什么,除非getNo()为空,否则不会对其进行评估,但是如果getNo()确实是null,那么我们已经知道结果,因此在那里包含它是非常多余的