返回顶部
首页 > 资讯 > 精选 >Java8新特性Optional容器类的应用有哪些
  • 692
分享到

Java8新特性Optional容器类的应用有哪些

2023-06-25 14:06:52 692人浏览 独家记忆
摘要

这篇文章主要讲解了“Java8新特性Optional容器类的应用有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java8新特性Optional容器类的应用有哪些”吧!1.Optiona

这篇文章主要讲解了“Java8新特性Optional容器类的应用有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java8新特性Optional容器类的应用有哪些”吧!

1.Optional容器类

Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。

常用方法 :

  • Optional.of(T t) : 创建一个 Optional 实例

  • Optional.empty() : 创建一个空的 Optional 实例

  • Optional.ofNullable(T t) : 若 t 不为 null,创建 Optional 实例;否则创建空实例

  • isPresent() : 判断是否包含值

  • orElse(T t) : 如果调用对象包含值,返回该值,否则返回t

  • orElseGet(Supplier s) : 如果调用对象包含值,返回该值,否则返回 s 获取的值

  • map(Function f) : 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()

  • flatMap(Function mapper) : 与 map 类似,要求返回值必须是Optional

2.应用举例

下面的代码案例按照上面所列方法顺序给出。首先需要一个Employee类用作测试

package com.szh.java8; import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor; @Data@NoArgsConstructor@AllArgsConstructorpublic class Employee {     private Integer id;    private String name;    private Integer age;    private Double salary; }
@Test    public void test1() {        Optional<Employee> op = Optional.of(new Employee());        Employee employee = op.get();        System.out.println(employee);    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test2() {        Optional<Employee> op = Optional.empty();        System.out.println(op.get());    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test3() {        Optional<Employee> op = Optional.ofNullable(new Employee(1001,"张起灵",18,6666.66));        System.out.println(op.get());    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test4() {        Optional<Employee> op = Optional.of(new Employee());        if (op.isPresent()) {            System.out.println(op.get());        }    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test5() {        Optional<Employee> op1 = Optional.ofNullable(null);        Employee employee1 = op1.orElse(new Employee(1001,"张起灵",18,6666.66));        System.out.println(employee1);         Optional<Employee> op2 = Optional.ofNullable(new Employee());        Employee employee2 = op2.orElse(new Employee(1001,"张起灵",18,6666.66));        System.out.println(employee2);    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test6() {        Optional<Employee> op1 = Optional.ofNullable(null);        Employee employee1 = op1.orElseGet(() -> new Employee(1001,"张起灵",18,6666.66));        System.out.println(employee1);         Optional<Employee> op2 = Optional.ofNullable(new Employee());        Employee employee2 = op2.orElseGet(() -> new Employee(1001,"张起灵",18,6666.66));        System.out.println(employee2);    }

Java8新特性Optional容器类的应用有哪些

@Test    public void test7() {        Optional<Employee> op1 = Optional.of(new Employee(1001,"张起灵",18,6666.66));         Optional<String> op2 = op1.map(Employee::getName);        System.out.println(op2.get());         Optional<String> op3 = op1.flatMap((e) -> Optional.of(e.getName()));        System.out.println(op3.get());    }

Java8新特性Optional容器类的应用有哪些

感谢各位的阅读,以上就是“Java8新特性Optional容器类的应用有哪些”的内容了,经过本文的学习后,相信大家对Java8新特性Optional容器类的应用有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java8新特性Optional容器类的应用有哪些

本文链接: https://lsjlt.com/news/305349.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java8新特性Optional容器类的应用有哪些
    这篇文章主要讲解了“Java8新特性Optional容器类的应用有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java8新特性Optional容器类的应用有哪些”吧!1.Optiona...
    99+
    2023-06-25
  • Java8新特性Optional类怎么应用
    这篇“Java8新特性Optional类怎么应用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java8新特性Optiona...
    99+
    2023-06-29
  • 深入理解Java8新特性之Optional容器类的应用
    1.Optional容器类 Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,...
    99+
    2024-04-02
  • 关于Java8新特性Optional类的详细解读
    目录一、Optional类的出现二、Optional类概述三、Optional类常用方法1. 创建Optional类对象的方法2. 判断Optional容器中是否包含对象3. 获取O...
    99+
    2023-05-19
    Java8 Optional Java Optional类
  • Java8新特性系列有哪些
    本篇内容介绍了“Java8新特性系列有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Java 8之前...
    99+
    2024-04-02
  • Java8新特性Optional类处理空值判断回避空指针异常应用
    目录一、序言二、问题复原(一)素材准备(二)模拟演示1、传统方式2、优雅方式三、小结一、序言 空值异常是应用运行时常见的异常,传统方式为了编写健壮的应用,常常使用多层嵌套逻辑判断回避...
    99+
    2024-04-02
  • Java8中流的特性有哪些
    这篇文章主要介绍了Java8中流的特性有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。流(Stream)是Java8为了实现最佳性能而引入的一个全新的概念。在过去的几年中...
    99+
    2023-05-30
    java8
  • Java8中Stream的特性有哪些
    这期内容当中小编将会给大家带来有关Java8中Stream的特性有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.初识stream先来一个总纲:东西就是这么多啦,stream是java8中加入的一个...
    99+
    2023-05-31
    java8 stream ava
  • Java8中日期API的特性有哪些
    这期内容当中小编将会给大家带来有关Java8中日期API的特性有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.Clock 时钟Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可...
    99+
    2023-05-31
    java8 日期api ava
  • java容器类有哪些特点
    Java容器类具有以下特点:1. 可以存储多个元素:容器类可以存储多个元素,包括基本数据类型和对象类型。2. 动态调整大小:容器类可...
    99+
    2023-09-21
    java
  • java8新特性之stream流中reduce()求和知识有哪些
    这篇文章主要介绍了java8新特性之stream流中reduce()求和知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.stream().reduce()单字段求...
    99+
    2023-06-15
  • html5的新特性有哪些
    这篇文章主要介绍html5的新特性有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!新增的元素html5新增了一些语义化更好的标签元素。结构元素article元素,表示页面中的一块...
    99+
    2024-04-02
  • HTLM的新特性有哪些
    本篇内容主要讲解“HTLM的新特性有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTLM的新特性有哪些”吧!1.Flash被HTML5取代Flash绘图 ...
    99+
    2024-04-02
  • Node18的新特性有哪些
    本篇内容介绍了“Node18的新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 原生支持fe...
    99+
    2024-04-02
  • Java15的新特性有哪些
    本篇内容主要讲解“Java15的新特性有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java15的新特性有哪些”吧!新特性JDK 15 新特性一览表:IDJEPFeature1339Edw...
    99+
    2023-06-16
  • Python3.9的新特性有哪些
    这篇文章主要讲解了“Python3.9的新特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3.9的新特性有哪些”吧!1. 词典联合运算符这是我最喜欢的功能之一,语法非常优...
    99+
    2023-06-16
  • Go1.16的新特性有哪些
    本篇内容介绍了“Go1.16的新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前几天 Go 官方正式发布了 1.16 版本。从这个...
    99+
    2023-06-15
  • Kubernetes1.4的新特性有哪些
    这篇文章主要介绍“Kubernetes1.4的新特性有哪些”,在日常操作中,相信很多人在Kubernetes1.4的新特性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Kubernetes1.4的新特性...
    99+
    2023-06-28
  • Laravel10的新特性有哪些
    今天小编给大家分享一下Laravel10的新特性有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Laravel 10现已...
    99+
    2023-07-05
  • spring4的新特性有哪些
    这篇文章给大家介绍spring4的新特性有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。从Spring4开始,Spring以Servlet3为进行开发,如果用Spring MVC 测试框架的话需要指定Servlet...
    99+
    2023-05-31
    spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作