java - java 9 OR 和 java 8 orElseGet 的区别

标签 java java-8 option-type java-9

Java9 给 Optional 添加了 .or 方法。现有的 .orElseGet 有何不同?

checkUserInMemory(userId).or(() -> checkUserInDB(userId));

最佳答案

主要是两者的返回类型不同。

Optional.orElseGet

  • 调用orElseGet返回对象 T本身。

  • 抛出 NullPointerException如果没有值存在并且提供函数是null

  • 用例:根据提供的函数确定性地获取值。

Optional.or

关于java - java 9 OR 和 java 8 orElseGet 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017995/

相关文章:

java - 使用 Java 进行离线 XML 验证

java - 算法 - O(n) 中二叉搜索树的每两个节点之间的距离总和?

java - 使用 Stream API 和 Printwriter 写入文件时如何避免最后一行?

java - 可选的 <Integer> 不能转换为 Int(用于 GUI 进度条)

kotlin - sumByDouble 需要 Double 找到 Double?

java - 如何将参数列表传递给VM命令行

java - 实现具有字符串数据类型的二维矩阵的最佳数据结构是什么?

Collections<Integer>.stream() 的 Java8 IntStream 不兼容返回类型

java - 如何根据字符串的组合删除重复项?

java - Java 中的可选 orElse 可选