Java Optional空值处理疑问:调用currencyJson方法传递的是空串还是null
问题解答
你当前的写法存在空指针风险,无法实现空日期返回空字符串的预期:
- 当
entity.getDateFrom()为null时,你直接在Optional.ofNullable的入参中调用.toString()方法,会在Optional逻辑执行前直接抛出NullPointerException,根本走不到orElse("")分支,自然也不可能返回空字符串。
正确处理写法
// 先对日期对象本身做判空,再安全转换为字符串 String start = Optional.ofNullable(entity.getDateFrom()).map(Object::toString).orElse(""); String end = Optional.ofNullable(entity.getDateTo()).map(Object::toString).orElse("");
效果说明
修改后如果原日期对象为null,会直接返回你设置的默认空字符串,最终传入currencyJson方法的参数就是空字符串,不会出现null值。
额外注意
如果两个参数都为空字符串,你拼接出来的请求URL会是http://api.nbp.pl/api/exchangerates/tables/c//,需要确认NBP开放平台是否支持该格式的请求,若不支持可以额外加判断:当两个日期都为空时直接省略日期路径段即可。
内容的提问来源于stack exchange,提问作者Krzysiek
相关产品推荐
相关产品推荐

