女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用Java 8的Function接口來消滅if...else

Android編程精選 ? 來源:juejin.cn/post/ ? 作者:juejin.cn/post/ ? 2022-04-21 10:23 ? 次閱讀

在開發過程中經常會使用if...else...進行判斷拋出異常、分支處理等操作。這些if...else...充斥在代碼中嚴重影響了代碼代碼的美觀,這時我們可以利用Java 8Function接口來消滅if...else...

if(...){
thrownewRuntimeException("出現異常了");
}

if(...){
doSomething();
}else{
doOther();
}

Function 函數式接口

使用注解@FunctionalInterface標識,并且只包含一個抽象方法的接口是函數式接口函數式接口主要分為Supplier供給型函數、Consumer消費型函數、Runnable無參無返回型函數和Function有參有返回型函數。

Function可以看作轉換型函數

Supplier供給型函數

Supplier的表現形式為不接受參數、只返回數據

9f6cb94c-c09e-11ec-bce3-dac502259ad0.jpg

Consumer消費型函數

Consumer消費型函數和Supplier剛好相反。Consumer接收一個參數,沒有返回值

9f7e14da-c09e-11ec-bce3-dac502259ad0.jpg

Runnable無參無返回型函數

Runnable的表現形式為即沒有參數也沒有返回值

9f8fdaa8-c09e-11ec-bce3-dac502259ad0.jpg

Function函數的表現形式為接收一個參數,并返回一個值。SupplierConsumerRunnable可以看作Function的一種特殊表現形式

9fa29756-c09e-11ec-bce3-dac502259ad0.jpg

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能。

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

使用小技巧

處理拋出異常的if

  1. 定義函數

定義一個拋出異常的形式的函數式接口, 這個接口只有參數沒有返回值是個消費型接口

/**
*拋異常接口
**/
@FunctionalInterface
publicinterfaceThrowExceptionFunction{

/**
*拋出異常信息
*
*@parammessage異常信息
*@returnvoid
**/
voidthrowMessage(Stringmessage);
}
  1. 編寫判斷方法

創建工具類VUtils并創建一個isTure方法,方法的返回值為剛才定義的函數式接口-ThrowExceptionFunctionThrowExceptionFunction的接口實現邏輯為當參數btrue時拋出異常

/**
*如果參數為true拋出異常
*
*@paramb
*@returncom.example.demo.func.ThrowExceptionFunction
**/
publicstaticThrowExceptionFunctionisTure(booleanb){

return(errorMessage)->{
if(b){
thrownewRuntimeException(errorMessage);
}
};
}
  1. 使用方式

調用工具類參數參數后,調用函數式接口throwMessage方法傳入異常信息。當出入的參數為false時正常執行

9fb69030-c09e-11ec-bce3-dac502259ad0.jpg

當出入的參數為true時拋出異常

9fc77472-c09e-11ec-bce3-dac502259ad0.jpg

處理if分支操作

  1. 定義函數式接口

創建一個名為BranchHandle的函數式接口,接口的參數為兩個Runnable接口。這兩個兩個Runnable接口分別代表了為truefalse時要進行的操作

/**
*分支處理接口
**/
@FunctionalInterface
publicinterfaceBranchHandle{

/**
*分支操作
*
*@paramtrueHandle為true時要進行的操作
*@paramfalseHandle為false時要進行的操作
*@returnvoid
**/
voidtrueOrFalseHandle(RunnabletrueHandle,RunnablefalseHandle);

}
  1. 編寫判斷方法

創建一個名為isTureOrFalse的方法,方法的返回值為剛才定義的函數式接口-BranchHandle

/**
*參數為true或false時,分別進行不同的操作
*
*@paramb
*@returncom.example.demo.func.BranchHandle
**/
publicstaticBranchHandleisTureOrFalse(booleanb){

return(trueHandle,falseHandle)->{
if(b){
trueHandle.run();
}else{
falseHandle.run();
}
};
}
  1. 使用方式

參數為true時,執行trueHandle

9fda6e06-c09e-11ec-bce3-dac502259ad0.jpg

參數為false時,執行falseHandle

9fe64ef6-c09e-11ec-bce3-dac502259ad0.jpg

如果存在值執行消費操作,否則執行基于空的操作

  1. 定義函數

創建一個名為PresentOrElseHandler的函數式接口,接口的參數一個為Consumer接口。一個為Runnable,分別代表值不為空時執行消費操作和值為空時執行的其他操作

/**
*空值與非空值分支處理
*/
publicinterfacePresentOrElseHandler<TextendsObject>{

/**
*值不為空時執行消費操作
*值為空時執行其他的操作
*
*@paramaction值不為空時,執行的消費操作
*@paramemptyAction值為空時,執行的操作
*@returnvoid
**/
voidpresentOrElseHandle(ConsumersuperT>action,RunnableemptyAction);

}
  1. 編寫判斷方法

創建一個名為isBlankOrNoBlank的方法,方法的返回值為剛才定義的函數式接口-PresentOrElseHandler

/**
*參數為true或false時,分別進行不同的操作
*
*@paramb
*@returncom.example.demo.func.BranchHandle
**/
publicstaticPresentOrElseHandlerisBlankOrNoBlank(Stringstr){

return(consumer,runnable)->{
if(str==null||str.length()==0){
runnable.run();
}else{
consumer.accept(str);
}
};
}
  1. 使用方式

調用工具類參數參數后,調用函數式接口presentOrElseHandle方法傳入一個ConsumerRunnable

參數不為空時,打印參數

9ff6e298-c09e-11ec-bce3-dac502259ad0.jpg

參數不為空時

-End-

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2984

    瀏覽量

    106858
  • 函數
    +關注

    關注

    3

    文章

    4368

    瀏覽量

    64187

原文標題:妙用Java8中的“Function”消滅if...else!

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Java的SPI機制詳解

    作者:京東物流 楊葦葦 1.SPI簡介 SPI(Service Provicer Interface)是Java語言提供的一種接口發現機制,用來實現接口接口實現的解耦。簡單來說,就是
    的頭像 發表于 03-05 11:35 ?674次閱讀
    <b class='flag-5'>Java</b>的SPI機制詳解

    華為云 Flexus X 實例下的場景體驗——小企業必備——JAVA 環境搭建——保姆級教學

    前言 上次我們使用的是 Ubuntu 操作的,這里跑的服務器多的還是 Huawei Cloud EulerOS,所以我們還原到基礎鏡像上做環境架設,此次我們架設 java 的基礎運行環境,是能
    的頭像 發表于 01-07 17:05 ?425次閱讀
    華為云 Flexus X 實例下的場景體驗——小企業必備——<b class='flag-5'>JAVA</b> 環境搭建——保姆級教學

    利用FPGA實現USB 2.0通信接口

    USB?2.0接口的實現方式 利用FPGA實現USB 2.0接口的方式一般有兩種,一是借助外圍的USB接口芯片,二是FPGA內部實現USB
    的頭像 發表于 12-30 13:59 ?2608次閱讀
    <b class='flag-5'>利用</b>FPGA實現USB 2.0通信<b class='flag-5'>接口</b>

    verilog計數器代碼為什么要使用這句話if (count===8\'bxxxxxxxx)count=8\'b0000_0000;

    ; else if(count==8\'b1111_1111) count<=8\'b0000_0000; else count<=count+1; end endmodu
    發表于 12-21 14:49

    Java 23功能介紹

    Java 23 包含全新和更新的 Java 語言功能、核心 API 以及 JVM,同時適合新的 Java 開發者和高級開發者。從?IntelliJ IDEA 2024.2?開始已支持 Java
    的頭像 發表于 12-04 10:02 ?840次閱讀
    <b class='flag-5'>Java</b> 23功能介紹

    Java集合API的改進介紹

    簡介 本文我們將探討不同 jdk 版本中各類的起源,以及新引入的類和接口背后的目的。我們將分析之前版本存在的問題,以及為何需要引入新的類或接口。此外,我們還將介紹集合類和接口中的新特性。文章將逐一
    的頭像 發表于 11-22 11:12 ?496次閱讀
    <b class='flag-5'>Java</b>集合API的改進介紹

    Java 枚舉與策略模式、函數式接口的結合:實現高內聚低耦合的設計

    中,通常會使用枚舉定義業務上的一組常量,那除了簡單地定義常量之外,我們如何利用枚舉實現高內聚、低耦合的設計呢?下面介紹下枚舉和策略模式、函數式接口的組合應用。 二、枚舉+策略模式
    的頭像 發表于 11-21 14:06 ?545次閱讀

    能否利用TSW1400控制TX7316脈沖信號的發射,接收,波束形成?

    最近買了TX7316和TSW1400FPGA板,想請問一下,能否利用TSW1400控制TX7316脈沖信號的發射,接收,波束形成?如果可以的話,二者是利用什么接口連接的?是USB嗎
    發表于 11-20 08:18

    基于Java的工具Power Stage Designer

    電子發燒友網站提供《基于Java的工具Power Stage Designer.pdf》資料免費下載
    發表于 11-14 16:01 ?7次下載
    基于<b class='flag-5'>Java</b>的工具Power Stage Designer

    Java中時間戳的使用

    Java中時間戳的使用
    的頭像 發表于 11-06 16:04 ?459次閱讀
    <b class='flag-5'>Java</b>中時間戳的使用

    java反編譯能拿到源碼嗎

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回Java源代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結構,但它并不總是能完美地還原原始源代碼。反編譯工具通常會產生與原始代碼
    的頭像 發表于 09-02 11:03 ?1658次閱讀

    華納云:java web和java有什么區別java web和java有什么區別

    的平臺,Java可以用于開發桌面應用程序、移動應用程序、企業級應用程序等。 – Java Web是Java語言在Web開發領域的應用,它使用Java技術
    的頭像 發表于 07-16 13:35 ?1350次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    8針M16接口的作用

    德索工程師說道8針M16接口作為一種高性能的電氣連接器,在現代電子和電氣領域發揮著重要作用。以下詳細闡述其主要作用:   8針M16接口憑借其獨特的
    的頭像 發表于 07-11 08:58 ?706次閱讀
    <b class='flag-5'>8</b>針M16<b class='flag-5'>接口</b>的作用

    8pinM8接口電路接觸檢查方法

    德索工程師說道進行8pin M8接口電路接觸檢查前,需要準備萬用表、示波器、絕緣電阻測試儀、清潔布、清潔劑等必要的檢查工具。確保這些工具的性能良好,能夠滿足檢查要求。
    的頭像 發表于 06-13 16:09 ?757次閱讀
    <b class='flag-5'>8pinM8</b><b class='flag-5'>接口</b>電路接觸檢查方法

    利用逆變器PSPICE仿真模型模擬瞬間動態響應

    電子發燒友網站提供《利用逆變器PSPICE仿真模型模擬瞬間動態響應.docx》資料免費下載
    發表于 06-05 13:18 ?1次下載