最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Java8新特性之Optional容器類的應(yīng)用

 更新時(shí)間:2021年11月11日 09:17:47   作者:張起靈-小哥  
Optional<T> 類(java.util.Optional) 是一個(gè)容器類,代表一個(gè)值存在或不存在,原來用 null 表示一個(gè)值不存在,現(xiàn)在 Optional 可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常,需要的朋友可以參考下本文

1.Optional容器類

Optional<T> 類(java.util.Optional) 是一個(gè)容器類,代表一個(gè)值存在或不存在,原來用 null 表示一個(gè)值不存在,現(xiàn)在 Optional 可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常。

常用方法 :

  • Optional.of(T t) : 創(chuàng)建一個(gè) Optional 實(shí)例
  • Optional.empty() : 創(chuàng)建一個(gè)空的 Optional 實(shí)例
  • Optional.ofNullable(T t) : 若 t 不為 null,創(chuàng)建 Optional 實(shí)例;否則創(chuàng)建空實(shí)例
  • isPresent() : 判斷是否包含值
  • orElse(T t) : 如果調(diào)用對象包含值,返回該值,否則返回t
  • orElseGet(Supplier s) : 如果調(diào)用對象包含值,返回該值,否則返回 s 獲取的值
  • map(Function f) : 如果有值對其處理,并返回處理后的Optional,否則返回 Optional.empty()
  • flatMap(Function mapper) : 與 map 類似,要求返回值必須是Optional

2.應(yīng)用舉例

下面的代碼案例按照上面所列方法順序給出。首先需要一個(gè)Employee類用作測試。

package com.szh.java8;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/**
 *
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public 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);
    }

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

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

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

    @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);
    }

    @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);
    }

    @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容器類的應(yīng)用的詳細(xì)內(nèi)容,更多關(guān)于Java Optional容器類的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringMVC配置與使用詳細(xì)介紹

    SpringMVC配置與使用詳細(xì)介紹

    Spring MVC是一個(gè)基于Java的實(shí)現(xiàn)了MVC設(shè)計(jì)模式的請求驅(qū)動(dòng)類型的輕量級Web框架,通過把Model,View,Controller分離,將web層進(jìn)行職責(zé)解耦,把復(fù)雜的web應(yīng)用分成邏輯清晰的幾部分,簡化開發(fā),減少出錯(cuò),方便組內(nèi)配合
    2022-07-07
  • 樹,二叉樹(完全二叉樹,滿二叉樹)概念圖解

    樹,二叉樹(完全二叉樹,滿二叉樹)概念圖解

    今天小編就為大家分享一篇關(guān)于二叉樹的圖文詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧,希望能對你有所幫助
    2021-07-07
  • 利用spring-data-redis實(shí)現(xiàn)incr自增的操作

    利用spring-data-redis實(shí)現(xiàn)incr自增的操作

    這篇文章主要介紹了利用spring-data-redis實(shí)現(xiàn)incr自增的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析

    SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java反射獲取和調(diào)用方法

    java反射獲取和調(diào)用方法

    本篇內(nèi)容主要給大家詳細(xì)講解了java反射獲取方法以及調(diào)用方法,需要的朋友參考學(xué)習(xí)一下吧。
    2017-12-12
  • idea中創(chuàng)建maven的Javaweb工程并進(jìn)行配置(圖文教程)

    idea中創(chuàng)建maven的Javaweb工程并進(jìn)行配置(圖文教程)

    這篇文章主要介紹了idea中創(chuàng)建maven的Javaweb工程并進(jìn)行配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),文中給大家提到了tomcat的運(yùn)行方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • RabbitMQ的基礎(chǔ)知識

    RabbitMQ的基礎(chǔ)知識

    本文詳細(xì)介紹了RabbitMQ的基礎(chǔ)知識,通過本文,我們可以了解到MQ工作原理、交換機(jī)等相關(guān)知識,有需要的朋友可以參考一下
    2021-08-08
  • 開發(fā)工具EesyCode使用方法解析

    開發(fā)工具EesyCode使用方法解析

    這篇文章主要介紹了開發(fā)工具EesyCode使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java常見踩坑記錄之異常處理

    Java常見踩坑記錄之異常處理

    程序運(yùn)行時(shí)發(fā)生的不被期望的事件,它阻止了程序按照程序員的預(yù)期正常執(zhí)行,這就是異常,下面這篇文章主要給大家介紹了關(guān)于Java常見踩坑記錄之異常處理的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • SpringBoot3整合Mybatis完整版實(shí)例

    SpringBoot3整合Mybatis完整版實(shí)例

    本文詳細(xì)介紹了SpringBoot3整合MyBatis的完整步驟,包括添加數(shù)據(jù)庫驅(qū)動(dòng)和MyBatis依賴、配置數(shù)據(jù)源和MyBatis、創(chuàng)建表和Bean類、編寫Mapper接口和XML文件、創(chuàng)建Controller類以及配置掃描包,通過這些步驟,可以實(shí)現(xiàn)SpringBoot3與MyBatis的成功整合,并進(jìn)行功能測試
    2025-01-01

最新評論

南城县| 大宁县| 桦甸市| 尼玛县| 莫力| 平遥县| 庆元县| 宁南县| 本溪市| 庐江县| 武乡县| 花莲县| 葵青区| 彰化市| 宜良县| 沂南县| 通州市| 迭部县| 望都县| 道孚县| 武义县| 哈巴河县| 内丘县| 三原县| 仙游县| 静安区| 丰都县| 漯河市| 泽库县| 湘潭县| 丰台区| 嘉禾县| 甘南县| 南漳县| 平利县| 东平县| 哈密市| 临沂市| 富顺县| 泾阳县| 沿河|