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
)将使意图更加清晰。您是否正确完全取决于所需的业务逻辑,这里没有人能够回答这个问题。可能相关:-)