gpt4 book ai didi

java - 如何在 java 中使用 Optional 检查是否为 null 以及是否具有特定值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:19 26 4
gpt4 key购买 nike

假设我的项目中有这段代码:

public List<T> getAll(Integer parameter) {
if(parameter != null && parameter > -1) {
// do something here
}
}

我的问题是:如何使用 Optional 而不是使用 if 进行检查,或者是否还有其他我可以使用的东西?

最佳答案

Optional 的设计灵感来自于函数式编程世界中众所周知的 monad。在这种情况下,它可能看起来像这样:

public List<T> getAll(Integer parameter) {

return Optional.ofNullable(parameter)
.filter(p -> p > -1)
.map(p -> *some modification*) //this line is optional
.orElseGet(() -> *some default value, probably an empty list*)
}

在这种情况下,条件检查在 filter 方法中执行。如果给定的 Predicate 不匹配,底层的 Optional 将为空。

如果要对基础值执行操作,请使用 map 方法,方法是为其提供一个 Function,该函数应应用于由 包装的元素>可选

最后,您可以使用 ifPresent() 简单地执行一些操作,抛出异常 orElseThrow 或者简单地使用 orElse 返回默认值> 或 orElseGet。请记住,orElseGet 接受一个 Supplier 实例,这使得它延迟计算默认值。

如果您想深入挖掘,请查看来自 Devoxx 的 @stuart-marks 谈话:https://www.youtube.com/watch?v=Ej0sss6cq14&t=2767s

在您的情况下,可能根本不需要 Optional。无非两种方法。一个带参数,一个不带参数。

关于java - 如何在 java 中使用 Optional 检查是否为 null 以及是否具有特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com