如何简化Map非空且含指定Key时返回对应值的Java代码?
代码简化解答
完全可以简化,且能在100%保留原有逻辑的前提下,去掉冗余判断和临时变量,最终简化后的代码如下:
public Optional<String> myMethod(final Map myMap) { return Optional.ofNullable(myMap) .map(map -> (String) map.get(Constants.SOME_KEY)); }
简化说明
- 原代码中
myMap.containsKey(Constants.SOME_KEY)的判断是冗余的:按照Map接口的规范,get()方法在key不存在时本身就会返回null,和先判断键存在再取值的空结果完全一致,不需要额外校验。 - 链式调用的逻辑完全对齐原有需求:
- 第一步
Optional.ofNullable(myMap)先处理入参为null的场景:如果myMap本身是null,直接返回空Optional,不会执行后续的取值操作,避免空指针 - 第二步
.map()操作仅在myMap非空时执行:不管是key不存在导致get返回null,还是key对应的value本身就是null,最终都会被Optional正确包装,和原方法的返回结果完全一致
- 第一步
- 简化后的实现去掉了原有的临时
result变量、多层if分支,逻辑更紧凑,可读性更强,兼容Java 8及以上所有版本。
内容的提问来源于stack exchange,提问作者Saif
相关产品推荐
相关产品推荐

