在 Java 中验证 BigDecimal 数据类型是否为 null

dev*_*dar 7 java validation bigdecimal

我正在尝试验证 java 中 BigDecimal 数据类型的 NULL。我能够验证 0 值,但是 NULL 会导致NULL Point Exception。我应该在异常中处理此数据类型的验证,还是可以对数据执行一些计算来验证它。下面是我迄今为止所做的一个示例:

 if(crime.getCrimeLatLocation() != null  & crime.getCrimeLongLocation() != null || crime.getCrimeLatLocation().compareTo(BigDecimal.ZERO) != 0 & crime.getCrimeLongLocation().compareTo(BigDecimal.ZERO) != 0){

     logger.info('Valid Data');
    }
Run Code Online (Sandbox Code Playgroud)

Zim*_*oot 3

||应该是&&- 发生的情况是,当你传入一个 null 值时,它在前两个条件下评估为 false,但随后它继续进行第三个和第四个条件并导致异常。如果将 更改||&&短路评估,将阻止评估第三个和第四个条件。

一定要使用 a&&而不是 a &- 前者使用短路求值,但后者会强制对第三个和第四个条件求值,并且您将再次遇到空指针异常。 condition1 && condition2表示“如果条件 1 为假,则返回 false,否则评估条件 2” - 如果条件 1 为假,则永远不会评估条件 2。相反,condition1 & condition2将始终评估这两个条件。使用的唯一原因&是条件是否有副作用。同样,condition1 || condition2如果条件 1 为真,则不会评估条件 2,但|始终评估两个条件。