Java 基础(Optional类)

Optional提供很多有用的方法,这样我们就不用显式进行空值检测。

OptionalTest.java

package com.klvchen.java4;

import org.junit.Test;

import java.util.Optional;

public class OptionalTest {

    /*
    Optional.of(T t) : 创建一个 Optional 实例,t 必须非空;
    Optional.empty() : 创建一个空的 Optional 实例
    Optional.ofNullable(T t): t 可以为 null
     */

    @Test
    public void test1(){
        Girl girl = new Girl();
        girl = null;
        Optional<girl> optionalGirl = Optional.of(girl);
    }

    @Test
    public void test2(){
        Girl girl = new Girl();
        girl = null;
        //ofNullable(T t): t&#x53EF;&#x4EE5;&#x4E3A;null
        Optional<girl> optionalGirl = Optional.ofNullable(girl);
        System.out.println(optionalGirl);
        // orElse(T t1):&#x5982;&#x679C;&#x5F53;&#x524D;&#x7684;optional&#x5185;&#x90E8;&#x5C01;&#x88C5;&#x7684;t&#x662F;&#x975E;&#x7A7A;&#x7684;&#xFF0C;&#x5219;&#x8FD4;&#x56DE;&#x5185;&#x90E8;&#x7684;t.

        // &#x5982;&#x679C;&#x5185;&#x90E8;&#x7684;&#x662F;&#x7A7A;&#x7684;&#xFF0C;&#x5219;&#x8FD4;&#x56DE;orElse()&#x65B9;&#x6CD5;&#x4E2D;&#x7684;&#x53C2;&#x6570;t1.

        Girl girl1 = optionalGirl.orElse(new Girl("&#x8D75;&#x4E3D;&#x9896;"));
        System.out.println(girl1);
    }

    public String getGirlName(Boy boy){
        return boy.getGirl().getName();

    }

    @Test
    public void test3(){
        Boy boy = new Boy();
        boy = null;
        String girlName = getGirlName(boy);
        System.out.println(girlName);
    }

    //&#x4F18;&#x5316;&#x4EE5;&#x540E;&#x7684;getGirlName():
    public String getGirlName1(Boy boy) {
        if (boy != null) {
            Girl girl = boy.getGirl();
            if (girl != null) {
                return girl.getName();
            }
        }
        return null;
    }

    @Test
    public void test4(){
        Boy boy = new Boy();
        boy = null;
        String girlName = getGirlName1(boy);
        System.out.println(girlName);
    }

    //&#x4F7F;&#x7528;Optional&#x7C7B;&#x7684;getGirlName():
    public String getGirlName2(Boy boy) {
        Optional<boy> boyOptional = Optional.ofNullable(boy);

        Boy boy1 = boyOptional.orElse(new Boy(new Girl("&#x8FEA;&#x4E3D;&#x70ED;&#x5DF4;")));

        Girl girl = boy1.getGirl();

        Optional<girl> girlOptional = Optional.ofNullable(girl);
        Girl girl1 = girlOptional.orElse(new Girl("&#x53E4;&#x529B;&#x5A1C;&#x624E;"));

        return girl1.getName();
    }

    @Test
    public void test5(){
        Boy boy = null;
        boy = new Boy();
        boy = new Boy(new Girl("&#x82CD;&#x8001;&#x5E08;"));
        String girlName = getGirlName2(boy);
        System.out.println(girlName);
    }
}

</girl></boy></girl></girl>

OptionalTest2.java

package com.klvchen.java;

import org.junit.Test;

import java.lang.annotation.Target;
import java.util.Optional;

public class OptionalTest2 {

    @Test
    public void test1(){
        Optional<object> op1 = Optional.empty();
        if (!op1.isPresent()){//Optional &#x5C01;&#x88C5;&#x7684;&#x6570;&#x636E;&#x662F;&#x5426;&#x5305;&#x542B;&#x6570;&#x636E;
            System.out.println("&#x6570;&#x636E;&#x4E3A;&#x7A7A;");
        }
        System.out.println(op1);
        System.out.println(op1.isPresent());
        //&#x5982;&#x679C;Optional&#x5C01;&#x88C5;&#x7684;&#x6570;&#x636E;value&#x4E3A;&#x7A7A;&#xFF0C;&#x5219;get()&#x62A5;&#x9519;&#x3002;&#x5426;&#x5219;&#xFF0C;value&#x4E0D;&#x4E3A;&#x7A7A;&#x65F6;&#xFF0C;&#x8FD4;&#x56DE;value,
        //System.out.println(op1.get());
    }

    @Test
    public void test2(){
        String str = "hello";
        str = null;
        //of(T t):&#x5C01;&#x88C5;&#x6570;&#x636E; t &#x751F;&#x6210; optional &#x5BF9;&#x8C61;&#x3002;&#x8981;&#x6C42; t &#x975E;&#x7A7A;&#xFF0C;&#x5426;&#x5219;&#x62A5;&#x9519;&#x3002;
        Optional<string> op1 = Optional.of(str);
        //get()&#x901A;&#x5E38;&#x4E0E;of()&#x65B9;&#x6CD5;&#x642D;&#x914D;&#x4F7F;&#x7528;&#x3002;&#x7528;&#x4E8E;&#x83B7;&#x53D6;&#x5185;&#x90E8;&#x7684;&#x5C01;&#x88C5;&#x7684;&#x6570;&#x636E;vaLue
        String str1 = op1.get();
        System.out.println(str1);

    }

    @Test
    public void test3(){
        String str = "beijing";
        str = null;
        //ofNullable(T t):&#x5C01;&#x88C5;&#x6570;&#x636E;t&#x8D4B;&#x7ED9;Optional&#x5185;&#x90E8;&#x7684;value&#x3002;&#x4E0D;&#x8981;&#x6C42;t&#x975E;&#x7A7A;
        Optional<string> op1 = Optional.ofNullable(str);
        //orELse(T t1):&#x5982;&#x679C;Optional&#x5185;&#x90E8;&#x7684;value&#x975E;&#x7A7A;&#xFF0C;&#x5219;&#x8FD4;&#x56DE;&#x6B64;vaLue&#x503C;&#x3002;&#x5982;&#x679C;
        //value&#x4E3A;&#x7A7A;&#xFF0C;&#x5219;&#x8FD4;&#x56DE;t1.

        String str2 = op1.orElse("shanghai");

        System.out.println(str2);

    }

}

</string></string></object>

Original: https://www.cnblogs.com/klvchen/p/15790546.html
Author: klvchen
Title: Java 基础(Optional类)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537531/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • day39-网络编程01

    Java网络编程01 1.网络相关的概念 1.1网络通信和网络 *网络通信 概念:两台设备之间通过网络实现数据传输 网络通信:将数据通过网络从一台设备传输到另一台设备 java.n…

    Java 2023年6月15日
    090
  • Java(2)数据类型与变量

    前言 Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共8种基本类型,其中有4种整型、2种浮点型、1种字符串类型char(用于表示Unicode编…

    Java 2023年6月9日
    082
  • 向服务器发送Https请求

    <!–https请求用的包–> <dependency> <groupid>org.apache.httpcomponents</gr…

    Java 2023年6月6日
    078
  • Nginx + FastCgi + Spawn-fcgi + c 的架构

    参考: nginx+c/c++ fastcgi:http://www.yis.me/web/2011/11/01/66.htm cgi探索之路:http://github.tian…

    Java 2023年5月30日
    078
  • 三流大学和一流大学学生的简历有什么区别?

    最近公司秋招,我写了一篇秋招文章,吸引了不少跃跃欲试的小伙伴,看着邮箱里形形色色的简历,不禁感慨,果然大家对敖丙是真爱,知道我最近比较缺素材,疯狂给我输送反面教材。 简历有忘记写名…

    Java 2023年6月9日
    075
  • quarz spring boot

    package com.pkfare.task.manage.config; import org.quartz.spi.TriggerFiredBundle; import or…

    Java 2023年5月30日
    093
  • Hash

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何…

    Java 2023年6月5日
    094
  • isEmpty 和 isBlank 的用法区别,你都知道吗?

    照惯例,先推荐整理很久、非常实用的面试题仓库: 史上最全的Java面试题库 正文如下,如果觉得有用欢迎点赞、关注~~ 也许你两个都不知道,也许你除了 isEmpty/ isNotE…

    Java 2023年5月29日
    070
  • SpringBoot集成beetl模板开发

    1、添加maven依赖 <dependency> <groupId>com.ibeetlgroupId> <artifactId>beet…

    Java 2023年6月7日
    065
  • java中的代码块(初始化块)

    介绍 代码块又叫初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过{ } 包围起来,但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不通过对象或类…

    Java 2023年6月6日
    0104
  • ANTLR初探

    ANTLR初探 1.下载ANTLR放在安装目录下 地址:https://www.antlr.org/download/index.html D:\Dev\SrcCode\antlr…

    Java 2023年6月5日
    068
  • java中final关键字

    介绍 final中文意思:最终的最后的 final 可以修饰类,属性,方法,局部变量,形参 使用场景 当不希望类被被继承时,可以用final修饰类 但不希望父类的某个方法,被子类重…

    Java 2023年6月6日
    093
  • Linux安装mysql8.0.29详细教程

    我在上午卸载了陪伴我多年的mysql5.7,现在准备安装mysql8.0。 1)根据自己电脑的位数和你cpu架构相符的安装 2))选完之后找到RPM Bundle点击下载 1、登录…

    Java 2023年6月13日
    071
  • 老年模式 之 fontScale篇

    之前整理过一篇全局字体设置 || 老年模式的文章,提到过4种方法,各有利弊。 最后推荐了方法4,自定义binding属性来实现。这里扩展一篇。 自定义binding实现的确不错,最…

    Java 2023年6月7日
    092
  • apk在线更新

    package gejw.android.weather; import gejw.android.weather.Constants.Constants;import gejw….

    Java 2023年6月16日
    072
  • 解决 nginx 出现 413 Request Entity Too Large 的问题

    1.若nginx用所用的 php 请求解析服务是 fpm, 则检查 /etc/php5/fpm/php.ini 文件中的参数 csharp;gutter:true; upload_…

    Java 2023年5月30日
    0117
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球