java - 如何在 Java 中编写智能合并代码?

标签 java nullpointerexception coalesce null-coalescing

object.getProperty().getSubProperty().getSubSubProperty();

考虑上面的代码。一个对象有一个属性,有一个子属性,有一个子子属性,可以用 getter 方法访问。

我们可以在 Java 中做什么来实现类似的东西:

Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);

org.apache.commons.lang3.ObjectUtils.defaultIfNull 有这样的东西。但是这个方法的问题是它只在 property 和 subProperty 不为 null 时有效。我想要一种获取 subSubProperty 或 defaultSubSubProperty 的方法,即使 property 和 subProperty 为 null。

我们如何做到这一点?

最佳答案

您可以在 Java 8 中使用 Optional。

String s = Optional.ofNullable(object)
                   .map(Type::getProperty)
                   .map(Type2::getSubProperty)
                   .map(Type3::getSubSubProperty)
                   .orElse(defaultValue);

您还可以使用 orElseGet(Supplier)orElseThrow(Throwable)

关于java - 如何在 Java 中编写智能合并代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847083/

相关文章:

java - Flyway DB迁移-如何访问应用服务(Spring配置)

java应用程序查询数据库返回nullpointerException

android - 从线程中获取 NullPointerException

java - 错误 - 使用 DrawerLayout 的 Android 应用程序中出现 NullpointEException

mysql - 组合多个表并使用 COALESCE 的奇怪行为

sql - 相当于IS NULL的ANSI

java - 避免额外的换行,写入 .txt 文件

java - 通过前缀获取 application.properties 的子集

python - 如何合并多个 pyspark 数组?

java - Vim Java 代码补全?