首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

javaorElseorElseGet 方法区别

orElseorElseGet 是 Optional 类的两个方法,用于处理可能为空的值。...区别 orElse 方法: orElse 方法接受一个默认值作为参数,并在 Optional 对象为空时返回该默认值。 无论 Optional 对象是否为空,orElse 方法都会执行默认值的计算。...; orElseGet 方法: orElseGet 方法接受一个 Supplier 函数式接口作为参数,并在 Optional 对象为空时调用该函数式接口获取默认值。...只有在 Optional 对象为空时,orElseGet 方法才会执行默认值的计算。...如果默认值的计算是简单的常量或已经存在的值,可以使用 orElse 方法。如果默认值的计算涉及复杂的逻辑或需要延迟计算,可以使用 orElseGet 方法。

29520

Java8 Optional用法和最佳实践

orElseGet() 方法类似于 orElse()。但是,如果没有Optional值,则不采用返回值,而是采用供应商功能接口,该接口将被调用并返回调用的值。...() 和orElseGet()之间有什么区别我们可能考虑的问题是:何时使用orElse和何时使用orElseGet?...看起来可以使用orElseGet的时候,使用orElse也可以代替(因为Supplier接口没有入参),而且使用orElseGet还需要将计算过程额外包装成一个 lambda 表达式。...具体到我们的场景,使用orElse的时候,每次它都会执行计算结果的过程,而对于orElseGet,只有Optional中的值为空时,它才会计算备选结果。这样做的好处是可以避免提前计算结果的风险。...(() -> englishName.getShortName()); }}```两个版本,分别使用orElseorElseGet

97430
您找到你想要的搜索结果了吗?
是的
没有找到

JDK8已出这么久了,还是有很多人不会用Opitonal啊

(new Person("小明", 2)); 2.9 Optional.orElseGet()方法(为空返回Supplier对象) 这个与orElse很相似,入参不一样,入参为Supplier对象,...()和orElseGet()还有orElseThrow()很相似,map()和flatMap()好相似 哈哈哈不用着急,都是从这一步过来的,我再给大家总结一下不同方法的异同点 orElse()和orElseGet...()和orElseThrow()的异同点 方法效果类似,如果对象不为空,则返回对象,如果为空,则返回方法体中的对应参数,所以可以看出这三个方法体中参数是不一样的 orElse(T 对象) orElseGet...相比ifPresent()多了OrElse判断。 stream()将Optional转换成stream,如果有值就返回包含值的stream,如果没值,就返回空的stream。...楠哥简介 资深 Java 工程师,微信号 nnsouthwind 《Java零基础实战》一书作者 腾讯课程官方 Java 面试官,今日头条认证大V GitChat认证作者,B站认证UP主(楠哥教你学Java

90830

Java8中使用Optional处理null对象

方法描述: orElseGet 方法和 orElse 方法类似,都是在 Optional 值为空时,返回一个默认操作,只不过 orElse 返回的是默认值,而 orElseGet 是执行 lambda...5.相似方法进行对比分析   可能小伙伴看到这,没用用过的话会觉得orElse()和orElseGet()还有orElseThrow()很相似,map()和flatMap()好相似,哈哈哈不用着急,都是从这一步过来的...orElse(T 对象) orElseGet(Supplier 对象) orElseThrow(异常) map()和orElseGet的异同点 方法效果类似,对方法参数进行二次包装...7.jdk1.9对Optional优化 首先增加了三个方法:or()、ifPresentOrElse() 和 stream() or() 与orElse等方法相似,如果对象不为空返回对象,如果为空则返回...相比ifPresent()多了OrElse判断。 stream()将Optional转换成stream,如果有值就返回包含值的stream,如果没值,就返回空的stream

2K10

还在用 if(obj!=null) 做非空判断?带你快速上手 Optional 实战性理解!

) 2.认识Optional并使用 简单来说,Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用 会用 null!...value : other; } 2.9 Optional.orElseGet()方法(为空返回Supplier对象) 这个与orElse很相似,入参不一样,入参为Supplier对象,为空返回传入对象的...()和orElseGet()还有orElseThrow()很相似,map()和flatMap()好相似 哈哈哈不用着急,都是从这一步过来的,我再给大家总结一下不同方法的异同点 orElse()和orElseGet...()和orElseThrow()的异同点 方法效果类似,如果对象不为空,则返回对象,如果为空,则返回方法体中的对应参数,所以可以看出这三个方法体中参数是不一样的 orElse(T 对象) orElseGet...相比ifPresent()多了OrElse判断。 **stream()**将Optional转换成stream,如果有值就返回包含值的stream,如果没值,就返回空的stream

7.7K20

了解、接受和利用Java中的Optional (类)

Java 8 引入Optional特性的基础上,Java 9 又为 Optional 类增加了三种方法:or()、ifPresentOrElse() 和 stream(),本文的最后,也针对这些新特性做了一些说明和实例...( () -> user2); orElse() 和 orElseGet() 之间的区别 乍一看,两种方法似乎效果相同。...但是,orElse() 方法仍然会创建默认的 User 对象。相反,orElseGet() 方法将不再创建 User 对象。...返回异常 除了 orElse() 和 orElseGet() 方法,Optional还定义了 ElseThrow() API,其作用是在对象为空时,直接抛出一个异常,而不是返回一个替代值。...6.Java 9 新增特性 在 Java 8 引入Optional特性的基础上,Java 9 又为 Optional 类增加了三种方法:or()、ifPresentOrElse() 和 stream()

1.3K60

答应我, 不要再用 if (obj != null) 判空了

()方法(判读是否为空并返回函数) 这个意思是如果对象非空,则运行函数体 源码:   public void ifPresent(Consumer<? ...value : other; } 2.9 Optional.orElseGet()方法(为空返回Supplier对象) 这个与orElse很相似,入参不一样,入参为Supplier对象,为空返回传入对象的...()和orElseGet()还有orElseThrow()很相似,map()和flatMap()好相似 哈哈哈不用着急,都是从这一步过来的,我再给大家总结一下不同方法的异同点 orElse()和orElseGet...()和orElseThrow()的异同点 方法效果类似,如果对象不为空,则返回对象,如果为空,则返回方法体中的对应参数,所以可以看出这三个方法体中参数是不一样的 orElse(T 对象) orElseGet...相比ifPresent()多了OrElse判断。 stream() 将Optional转换成stream,如果有值就返回包含值的stream,如果没值,就返回空的stream

62830
领券