HoneyMoose
  • 首页
  • Java
  • Jersey
  • Jira
  • Confluence
  • U.S.
    • USRealEstate
    • USVisaTrack
    • H1B
  • 项目和网站
    • CWIKI.US
    • OSSEZ 社区
    • WIKI.OSSEZ.COM
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
BLOG.OSSEZ.COM
A responsive blog theme focused om user reading experience
  1. Home
  2. Computer Science
  3. This article

Java 8 开始新增的 Optional 类 - 创建 Optional 对象

2022年05月17日 300Browse 0Like 0Comments

创建一个 Optional 对象

有下面的一些方法可以被用来创建 Optional 对象。

 

optianl-01

 

empty 静态方法

如果你想创建一个空的 Optional 的对象,我们简单的使用 Optional 类提供的 empty() 静态方法:

    @Test
    public void whenCreatesEmptyOptional_thenCorrect() {
        Optional<String> empty = Optional.empty();
        assertFalse(empty.isPresent());
    }

需要注意的是,我们使用 isPresent() 方法来检查 Optional 对象中值的情况。

如果我们创建的 Optional 对象有值的话,isPresent() 方法将会返回 True,否则 isPresent() 这个方法将会返回 False。

我们将会在本页面的后续部分继续讨论有关 isPresent() 方法的使用。

of 静态方法

下面的方法将会创建一个 Optional 对象,在创建这个对象的时候,我们使用了另外的一个静态方法 of() 来进行创建:

    @Test
    public void givenNonNull_whenCreatesNonNullable_thenCorrect() {
        String name = "HoneyMoose";
        Optional<String> opt = Optional.of(name);
        assertTrue(opt.isPresent());
    }

需要注意的是,如果你使用 of 静态方法创建一个 Optional 对象的时候,你还是有机会面临空对象(NullPointerException)异常。

考察下面的代码,如果运行的话,你还是会命令到空对象异常,如果你初始化 Optional 为空的话。

    @Test(expected = NullPointerException.class)
    public void givenNull_whenThrowsErrorOnCreate_thenCorrect() {
        String name = null;
        Optional.of(name);
    }

ofNullable 静态方法

有时候,我们希望在我们的代码中使用 Null 值。

这个时候,你可以使用静态方法 ofNullable() ,这个静态方法将会告诉 Optional 对象是可能为 Null 的。

    @Test
    public void givenNonNull_whenCreatesNullable_thenCorrect() {
        String name = "HoneyMoose";
        Optional<String> opt = Optional.ofNullable(name);
        assertTrue(opt.isPresent());
    }

通过上面的操作,我们可以在 Optional 使用 null,这样的话,如果你对 Optional 进行初始化的时候,不会因为null 的使用而导致异常。

    @Test
    public void givenNull_whenCreatesNullable_thenCorrect() {
        String name = null;
        Optional<String> opt = Optional.ofNullable(name);
        assertFalse(opt.isPresent());
    }
https://www.ossez.com/t/java-8-optional-optional/13965
Tags: None
Last updated:2022年05月17日

Kratos

stay absorbed stay excellent

Like
< Previous
Next >

Comments

Cancel reply

Newest Hotspots Random
Newest Hotspots Random
IntelliJ IDEA 2023.1 版本添加了包中类的列表功能 Jenkins 修改启动的端口 Spring 项目运行提示错误 Not a managed type Linux 查看 SELinux 的状态 WordPress 网站 Error Establishing a Database Connection(建立数据库连接时出错) Linux 开启或关闭 SELinux
Druid 加载 Kafka 流数据的性能配置参数 TuningConfig Confluence 6 使用 Apache 和 mod_proxy 添加 SSL和其他 Jersey 2.x 运行项目 Druid 通过 dsql 的服务器连接参数如何配置 Confluence 6 界面中修改过的文件 Confluence 6 配置草稿保存的时间
Categories
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • H1B
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Spring
  • Spring Batch
  • U.S.
  • USRealEstate
  • USVisaTrack
  • 我的小厨

COPYRIGHT © 2020 HoneyMoose. ALL RIGHTS RESERVED.

THEME CWIKIUS.CN MADE BY VTROIS