Map.getOrDefault被坑小记与optional

Map.getOrDefault被坑小记与optional,第1张

Map.getOrDefault被坑小记与optional 错误使用样例
	map.getOrDefault("account","").toString();
在运行几小时后,发现报错空指针;查看源码如下:
    default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
  • 竟然是||运算,如果containsKey 或者getkey() != null 则获取;
  • 如果包含key的value为null,则会获取null值导致空指针;
建议使用java8的Optional来判空:
	Optional.ofNullable(map.get("account")).orElse("");
  • 上述为判断map中key是否为null,如果是则返回orElse中的值;
对于Optional的应用常用的有以下几种:

Optional.of()、Optional.ofNullable()

  • 区别于of() 不可以为null,而ofNullable()可以为null;

Optional.ifPresent()

  • 判断值是否存在,可实现内部consumer实现若不存在的函数回调;

Optional.orElse()、orElseGet()、orElseThrow()

  • 判断值是否为null,若不为null则取当前值。


    • orElse():判断为null则取orElse()中的值
    • orElseGet():判断为null则执行自定义的回调函数;
    • orElseThrow():判断为null则抛处自定义异常;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/587927.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存