当前位置: 首页 > 知识库问答 >
问题:

使用可选的

龙俭
2023-03-14

我想使用可选实用程序在JDK8中执行空检查。这是我写的代码,给我一个错误:

java.util.Optional stringToUse = java.util.Optional.of(childPage.getContentResource().getValueMap().get("jcr:description").toString());
stringToUse.ifPresent(description = stringToUse);

这里可以显示或不显示“jcr:description”。如果它存在,我想在description变量中使用该值,如果为null,只需为description设置空白字符串。这里也可以使用Lambda表达式吗?谢谢

共有1个答案

严欣怡
2023-03-14

如果get("jcr: description")的结果可以为null,则不应该对其调用toString(),因为没有任何可选的可以做的,如果使用之前的操作已经失败NullPointerExc0019

你想要的,可以通过以下方式实现:

Optional<String> stringToUse = Optional.ofNullable(
    childPage.getContentResource().getValueMap().get("jcr:description")
).map(Object::toString);

那么你可以把它当作

if(stringToUse.isPresent())
    description = stringToUse.get();

如果“不做任何事情”是针对不存在的价值的预期行动。或者,您可以为此情况指定回退值:

description = stringToUse.orElse("");

然后,总是分配description,或者使用jcr: description的字符串表示,或者使用空字符串。

您可以使用stringToUse.ifPresent(string-

 类似资料:
  • 问题: 我有一个服务,接受一个字符串作为输入。每当某些字段不总是存在时,JSON模式都不同。当这些字段存在时,我如何使用Jayway的查询它们的值? 我尝试过的: 我使用了 返回如果路径没有找到,但是我的代码仍然抛出: 通用域名格式。乱穿马路。jsonpath。PathNotFoundException:路径$['somepath'中缺少属性 当我给它一个不存在的路径。有人知道这可能是什么原因吗?

  • 当使用Java8类时,有两种方法可以将值包装到Optional中。 我理解是使用的唯一安全方法,但为什么?为什么不直接使用

  • 考虑一个和方法。我想将s映射到s并获得第一个。显而易见的解决方案是使用,但要求返回一个流,而没有方法(或者它是或提供一个方法将其转换为,或将其作为)查看。 我能想出的最好的办法是: 但这似乎是一个很普通的案例,但却显得太冗长了。谁有更好的主意?

  • 本文向大家介绍swift 可选型的使用详解,包括了swift 可选型的使用详解的使用技巧和注意事项,需要的朋友参考一下  一、基本用法 可选性是Swift提供的一个特殊类型,它为我们编写程序提供便利的条件 swift是强类型语言,当我们需要使用一个变量,既可以为String,也可以为nil时,这时候就需要我们使用可选型。 二、可选型解包使用 三、多层解包(**swift3.0有变化) 四、Opti

  • 问题内容: 在阅读The Swift Programming Language时 ,我遇到了以下片段: 您可以使用 if 和 let 一起使用可能缺少的值。这些值表示为 optionals 。可选值包含一个值或包含nil来指示该值丢失。在值的类型后写一个问号(?),以将该值标记为可选。 片段1很清楚,但是片段2发生了什么?有人可以分解并解释吗?它只是使用块的替代方法吗?在这种情况下的确切作用是什么

  • 问题内容: 在Spring 3.0中,我可以有一个可选的path变量吗? 例如 在这里我想还是要调用相同的方法。 一种明显的解决方法是声明为请求参数: 然后/json?type=abc&track=aa或/json?track=rr将工作 问题答案: 你不能具有可选的路径变量,但是可以有两个调用相同服务代码的控制器方法: