登录
首页 >  文章 >  java教程

OptionalifPresent() 与OptionalorElse() 有何不同?

来源:dev.to

时间:2024-12-22 20:04:06 263浏览 收藏

小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《OptionalifPresent() 与OptionalorElse() 有何不同?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

OptionalifPresent() 与OptionalorElse() 有何不同?

optional.ifpresent()和optional.orelse()是java的optional类中的两个方法,旨在优雅地处理可选值,但它们的用途不同,使用场景也不同。

1。可选.ifpresent()

如果可选值中存在值,则 ifpresent() 方法将执行给定的操作。当该值存在时,它通常用于产生副作用。

主要特征:

动作执行:
仅当optional包含值时才执行指定的消费者。

无返回值:
它不返回任何内容(void 方法)。

optional<string> optional = optional.of("hello");

optional.ifpresent(value -> system.out.println("value is: " + value));
// output: value is: hello

optional<string> emptyoptional = optional.empty();
emptyoptional.ifpresent(value -> system.out.println("value is: " + value));
// no output since the optional is empty.

用例:

如果值存在则执行操作(例如,记录、更新状态)。
在对值进行操作之前避免显式的 null 检查。

2。可选.orelse()

orelse() 方法返回optional 中包含的值,如果optional 为空,则返回默认值。

主要特征:

返回值:
始终返回一个值,可以是包含的值,也可以是默认值。
无副作用:
不执行任何操作,仅返回值。

optional<string> optional = optional.of("hello");
string value = optional.orelse("default");
system.out.println(value); // output: hello

optional<string> emptyoptional = optional.empty();
string emptyvalue = emptyoptional.orelse("default");
system.out.println(emptyvalue); // output: default

用例:

当optional为空时提供后备/默认值。
确保始终从optional返回非空值。

将两者结合在一个场景中

示例:
您有一个代表用户名的可选值。如果用户名存在,则记录它。如果没有,您将使用默认用户名。

Optional<String> username = Optional.of("JohnDoe");

// Log the username if present
username.ifPresent(name -> System.out.println("User logged in: " + name));

// Get the username or default to "Guest"
String displayName = username.orElse("Guest");
System.out.println("Display name: " + displayName);

// Output:
// User logged in: JohnDoe
// Display name: JohnDoe

总结
当您想要对存在的值执行操作时,请使用 ifpresent()。

当您想要检索值时,请使用 orelse(),确保如果optional 为空,则返回默认值。

到这里,我们也就讲完了《OptionalifPresent() 与OptionalorElse() 有何不同?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>