空检查和空检查。在这里,我对null check。感到困惑。请向我解释以下代码?

时间:2018-10-29 15:31:00

标签: java

public boolean isValidCardDetails(CardDetailsTypeBean cardDetailsTypeBean) throws EnrollmentReqInvalidException {
        if (cardDetailsTypeBean.getCardNumber() == null || "".equals(cardDetailsTypeBean.getCardNumber())) {
            throw new EnrollmentReqInvalidException("ECDOO16", "card no is mandatory");
        }
        if (cardDetailsTypeBean.getNameOnCard() == null || "".equals(cardDetailsTypeBean.getNameOnCard())) {
            throw new EnrollmentReqInvalidException("ECDOO17", "name on card is mandatory");
        }
        if (cardDetailsTypeBean.getCvv() == 0 || "".equals(String.valueOf(cardDetailsTypeBean.getCvv()))) {
            throw new EnrollmentReqInvalidException("ECDOO18", "cvv is mandatory");
        }
        if (cardDetailsTypeBean.getExpDate() == null || "".equals(cardDetailsTypeBean.getExpDate())) {
            throw new EnrollmentReqInvalidException("ECDOO19", "exp date must be required");
        }
        return false;

    }

在这里,我想问一下获得卡号并检查为空之后,为什么在这里使用“”。等于?谁能向我解释一下?有点困惑?

3 个答案:

答案 0 :(得分:0)

这行代码:

cardDetailsTypeBean.getCardNumber() == null || "".equals(cardDetailsTypeBean.getCardNumber())

仅验证cardNumbernull还是等于空字符串。空字符串与null值不同,因此此代码检查getter读取的每个字段是否返回非空,非空值。

答案 1 :(得分:0)

实际上是多余的。

这样做的原因是保证在逻辑比较另一边的equals语句的顺序,因为{{1 }}旨在产生NullPointerException

它之所以可能存在,是因为该代码正在显式检查代码String.equals(null) 和一个空字符串。 >

答案 2 :(得分:0)

int main() { return -1; } ""不同,因为null""的值。您的String可能会以card number

实例化

""表示对null的引用没有价值。