如何优化Java Map取值后的空值检查与执行逻辑?
Java Map取值后执行操作的简洁写法
针对你提到的Map取值后需空值检查再执行方法的场景,有几种简洁处理方式:
1. JDK原生(Java 8+):结合Optional.ifPresent
利用Java 8引入的Optional类,一行代码完成空值判断与方法调用:
Optional.ofNullable(zoo.get(id)).ifPresent(animal -> animal.feed(food));
如果feed方法的参数适配,还能改用更简洁的方法引用:
Optional.ofNullable(zoo.get(id)).ifPresent(Animal::feed);
2. 自定义工具方法实现getAndUse风格逻辑
如果想要你示例中zoo.getAndUse(...)的调用形式,可以封装静态工具方法复用空值检查逻辑:
// 自定义工具类 public class MapOps { public static <K, V> void getAndUse(Map<K, V> map, K key, Consumer<V> action) { V value = map.get(key); if (value != null) { action.accept(value); } } }
调用时直接使用:
MapOps.getAndUse(zoo, id, animal -> animal.feed(food));
3. 第三方库辅助(如Guava)
如果项目已引入Guava库,可借助其工具类简化操作:
com.google.common.base.Optional.fromNullable(zoo.get(id)).ifPresent(animal -> animal.feed(food));
内容的提问来源于stack exchange,提问作者useSticks
相关产品推荐
相关产品推荐

