Java 关于检查一个条件

Java 关于检查一个条件,java,Java,请告诉我一件事,我有下面这段代码 public static final int FALSE = 0; public static final int TRUE = 10; 现在我必须在它之间添加一个条件…检查 walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getValues().size() 如果为0,则返回False..我已按以下方式执行 if (!walgreensRewardsSup

请告诉我一件事,我有下面这段代码

  public static final int FALSE = 0;
  public static final int TRUE = 10;
现在我必须在它之间添加一个条件…检查 walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getValues().size() 如果为0,则返回False..我已按以下方式执行

     if (!walgreensRewardsSupport.isPreProdOrTrainingMode()
        && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
        && null != walgreensRewardsInfoLine
        && null != walgreensRewardsInfoLine.getMemberFullProfile()
        && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
        && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
        && !transaction
            .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
        && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
        // No need to force recalculation each time, recalculation happens after any tender line is
        // added to transaction.
        && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
            true, false).isGreaterThanZero()) {
      return TRUE;
    }   
else {
      return FALSE;
    }

  }

请告知它是否正确

在第一个代码块中,您有:

     if (!walgreensRewardsSupport.isPreProdOrTrainingMode()
        && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
        && null != walgreensRewardsInfoLine
        && null != walgreensRewardsInfoLine.getMemberFullProfile()
        && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
        && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
        && !transaction
            .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
        && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
        // No need to force recalculation each time, recalculation happens after any tender line is
        // added to transaction.
        && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
            true, false).isGreaterThanZero()) {
      return TRUE;
    }else if (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() == 0)
{
return FALSE
}   
else {
      return FALSE;
    }

  }
return (condition);
这可以简化为:

if (condition) {
  return TRUE;
} else {
  return FALSE;
}
如果真与假都是布尔值

return (condition) ? TRUE : FALSE;
在第二个代码块中,您有:

     if (!walgreensRewardsSupport.isPreProdOrTrainingMode()
        && walgreensRewardsSupport.isWagRewardsRedeemptionEnabled()
        && null != walgreensRewardsInfoLine
        && null != walgreensRewardsInfoLine.getMemberFullProfile()
        && (null != walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints())
        && (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() != 0)
        && !transaction
            .getBooleanValue(ITransactionHashtableWag.REWARDS_REDEMPTION_ZIPCODE_LIMIT_REACHED)
        && !walgreensRewardsRedemptionSupport.isLoyaltyRedemptionTenderLineExist(transaction)
        // No need to force recalculation each time, recalculation happens after any tender line is
        // added to transaction.
        && walgreensRewardsRedemptionSupport.getRedemptionEligibleTransactionAmount(transaction,
            true, false).isGreaterThanZero()) {
      return TRUE;
    }else if (walgreensRewardsInfoLine.getMemberFullProfile().getRewardPoints().getCurrentBalance() == 0)
{
return FALSE
}   
else {
      return FALSE;
    }

  }
return (condition);
除非您预期第二个条件的评估会产生副作用,否则else if没有任何值

还请注意,对私有方法的一些深思熟虑的使用可以使此代码更容易理解。您可以像这样封装大条件的一部分:

if (condition1) {
  return TRUE;
} else if (condition2) {
  return FALSE;
} else {
  return FALSE;
}

最好只是将您想要的false的逻辑补码添加到一组条件中,这些条件被逻辑地和在一起返回true

例如:

private boolean hasRewardsPointsBalance(InfoLine infoLine) {
  if (null == infoLine) return false;
  MemberProfile profile = infoLine.getMemberFullProfile();
  if (null == profile) return false;
  RewardsPoints rewards = profile..getRewardPoints();
  if (null == rewards) return false;
  return (rewards.getCurrentBalance() != 0);
}


这比您编写的代码要简单。

1。你不能期望在发帖后不到120秒就能得到答案。2.您是否测试过它是否按预期工作?如果没有,你注意到了什么意想不到的行为?什么是对的和错的?如果它们只是对的和错的,为什么不使用普通的Java文本呢?在“null!=…”和“null!=…”之间,这看起来更像是C而不是Java。可能的重复用户:我并不奇怪您对此感到困惑,检查非常复杂。一系列较小的检查,每个都返回TRUE和/或FALSE(或者更好的是,
TRUE
/
FALSE
)将使意图更加清晰。您是否正确完全取决于所需的业务逻辑,这里没有人能够回答这个问题。可能相关:-)