Nuñ*_*ada 8 java bigdecimal optional java-8
如果不是,我有一个BigDecimal
我想要投射的金额,但我做了一个例外:Long
null
java.lang.NullPointerException
BigDecimal bgAmount = getAmount();
long totalSupplyFilterMin =
Optional.ofNullable(bgAmount.longValue()).orElse(Long.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)
不要...使用一个Optional
什么是空检查.只是明确检查null
,并随后取消引用对象,如果它不为空.
BigDecimal bgAmount = getAmount();
long totalSupplyFilterMin = Long.MIN_VALUE;
if(bgAmount != null) {
totalSupplyFilterMin = bgAmount.longValue();
}
Run Code Online (Sandbox Code Playgroud)
您将其Optional
用作返回值以指示缺少值. 它不是空检查的替代品.
首先你使用Optional
不当.什么时候bgAmount == null
,然后Optional.ofNullable(bgAmount.longValue())
抛出NPE
.正确的用法是:
Optional.ofNullable(bgAmount)
.orElse(BigDecimal.valueOf(Long.MIN_VALUE))
.longValue();
Run Code Online (Sandbox Code Playgroud)
要么
Optional.ofNullable(bgAmount)
.map(BigDecimal::longValue)
.orElse(Long.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)