首页 > 解决方案 > 如何以更好的方式用可选方式重写空检查

问题描述

我有一小段代码。我想用更少的嵌套检查以更好的方式编写它。我怎样才能实现它?

Item item = itemResponse.getItem();
Optional<Item> optionalItem = Optional.ofNullable(item);
if (optionalItem.isPresent()) {
    List<NameValue> listValues = item.getValues();
    Optional<List<NameValue>> optionalListValues = Optional.ofNullable(listValues);
    if (optionalListValues.isPresent()) {
        System.out.println(listValues);
    }
}

有什么简洁的方法可以使用 Java 8 重写上面的代码吗?

标签: javaoptional

解决方案


您可以使itemResponse.getItem()类返回Optional<Item>并使用链式mapOptional方法,该方法仅在具有值时才会执行,如果map方法返回非 null 值,则仅ifPresent(Consumer consumer)执行final

Optional<Item> item = itemResponse.getItem()

item.map(item::getValues)
    .ifPresent(System.out::println);

推荐阅读