1. 程式人生 > >Java 8 函式式介面,Function,Consumer,Predicate 介面的學習

Java 8 函式式介面,Function,Consumer,Predicate 介面的學習

void accept(T t);  
2.1 使用     還是如上的例子,Demo程式碼如下:
public class Test {  
    public static void main(String[] args) throws InterruptedException {  
        String name = "";  
        String name1 = "12345";  
          
        validInput(name, inputStr ->    
                System.out.println(inputStr.isEmpty() ? "名字不能為空":"名字正常"));  
        validInput(name1, inputStr ->  
                System.out.println(inputStr.isEmpty() ? "名字不能為空":"名字正常"));  
          
    }  
    public static void validInput(String name,Consumer<String> function) {  
        function.accept(name);  
    }  
}  

2.2 Consumer 和 Function 的區別     主要就是 Consumer 介面沒有返回值, Function 介面有返回值。
三. Predicate 介面的使用
    Predicate 方法 表示 判斷 輸入的物件是否 符合某個條件。主要方法如下:
boolean test(T t);  

Demo,還是如上面的例子:
public class Test {  
    public static void main(String[] args) throws InterruptedException {  
        String name = "";  
        String name1 = "12";  
        String name2 = "12345";  
          
        System.out.println(validInput(name,inputStr ->  !inputStr.isEmpty() &&  inputStr.length() <= 3 ));  
        System.out.println(validInput(name1,inputStr ->  !inputStr.isEmpty() &&  inputStr.length() <= 3 ));  
        System.out.println(validInput(name2,inputStr ->  !inputStr.isEmpty() &&  inputStr.length() <= 3 ));  
          
    }  
    public static boolean validInput(String name,Predicate<String> function) {  
        return function.test(name);  
    }  
}  

輸出為:

相關推薦

Java 8 式式介面FunctionConsumerPredicate 介面學習

void accept(T t); 2.1 使用     還是如上的例子,Demo程式碼如下: public class Test { public static void main(String[] args) throws InterruptedException {

Java 8 式式介面 : Supplier、FunctionConsumerPredicate

函式式介面特點 1、三種方法 唯一的抽象方法 使用default定義普通方法(預設方法),通過物件呼叫。 使用static定義靜態方法,通過介面名呼叫。 2、一個新註解@FunctionInterface 如果某一個介面就是為了函式式介面而生的,使用註解@F

Java 8 式式介面

函式式介面:由@FunctionalInterface註解,簡稱FI。其中有且只有一個自己獨有的抽象方法,不包括從上級繼承過來的方法。其中可以有多個預設方法和靜態方法例如:@FunctionalInte

Java式式介面、方法引用

1、函式式介面-概念及格式 函式式介面:有且只有一個抽象方法的介面(可以有其他的方法:預設方法,靜態方法,私有方法…) 2、函式式介面[email protected]註解 1)、在定義函式式介面時,為防止發生定義錯誤,可使用@FunctionalIn

Java 8 Lambda(類庫篇——Streams APICollector和並行)

參考資料:1、背景自從lambda表示式成為Java語言的一部分之後,Java集合(Collections)API就面臨著大幅變化。為了不推到重來,所以對現有的API進行改進。為現有的介面(例如Collection,List和Stream)增加擴充套件方法;在類庫中增加新的流

JDK8式式介面FunctionConsumerPredicate、Supplier

備註1:觀察發現,函式式介面下共有 1、三種方法 1.1 唯一的抽象方法 1.2 使用default定義普通方法(預設方法),通過物件呼叫。 實現介面後,因為預設方法不是抽象方法,所以可以不重寫,但是如果開發需要,也可以重寫 。當然如果介面中

Java 8的CompletableFuture在方法內使用不當導致區域性變量出現執行緒安全問題

最近在專案使用Java8 的CompletableFuture執行一些非同步多執行緒任務,一時疏忽,導致ArrayList出現執行緒安全問題就算在方法內使用區域性變數,但使用非同步多執行緒執行任務,還是會出現執行緒安全問題以下是錯誤、正確使用的示例方法importjava.t

深入理解Java 8 Lambda(類庫篇——Streams APICollectors和並行)

作者:Lucida 微博:@peng_gong 本文謝絕轉載,如需轉載需徵得作者本人同意,謝謝。 本文是深入理解Java 8 Lambda系列的第二篇,主要介紹Java 8針對新增語言特性而新增的類庫(例如Streams API、Collectors和並行)。 關於 Java SE 8增加了新的語言

java1.8-式式(Functional)介面

什麼是函式式(Functional)介面 l 只包含一個抽象方法的介面,稱為 函式式介面 。 l

Java 8 新特性-菜鳥教程 (3) -Java 8 數式接口

但是 style vax arr 結果 友好 face todo 兩個 Java 8 函數式接口 函數式接口(Functional Interface)就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的接口。 函數式接口可以被隱式轉換為lambda表達式。 函數式接口

Java 8 數語言程式設計探祕 ( 上 )

引子 將行為作為資料傳遞 怎樣在一行程式碼裡同時計算一個列表的和、最大值、最小值、平均值、元素個數、奇偶分組、指數、排序呢? 答案是思維反轉!將行為作為資料傳遞。 文藝青年的程式碼如下所示: public class FunctionUtil {    publ

Java 8 數語言程式設計 如何優雅的使用Optional

Optional Optional是Java8提供的為了解決null安全問題的一個API。 1. Optional 應該只用於返回型別 而不是引數和屬性,不然會使程式碼變的繁瑣,影響可讀性 2 你不應該簡單的呼叫 get() Optinal的目的是為了表示此值有

Java 8 數語言程式設計 Lambda

Lambda表示式 a function (or a subroutine) defined, and possibly called, without being bound to an identifier。 一段帶有輸入引數的可執行語句塊。 在Java 8

JAVA 8數語言程式設計(三):柯里化與惰性求值

百度百科裡是這麼定義柯里化的: 在電腦科學中,柯里化(Currying)是把接受多個引數的函式變換成接受一個單一引數(最初函式的第一個引數)的函式,並且返回接受餘下的引數且返回結果的新函式的技術。 有沒有看了跟沒看一樣,那就對了,很多技術概念就是這樣

Java DIY 式式方法—— flatmap

本文是 用Java DIY 函式式方法—— map 續篇, 解決如何使用java實現函式式方法-flatmap。 注意 不適合對函式式一點基礎都沒有的讀者 DIY實現不是完美的,僅僅是用例項表達函式式方法的理解 這個系列文章不是分析java 8 stream中的方法原

JAVA 8數語言程式設計(一):高階函式

函數語言程式設計的核心在高階函式與偏函式,在JAVA 8中,提供了很多函式式的介面,但跟Python、Javascript的函式相比較,還是存在較大的距離。 首先看一個高階函式的例子,這裡利用區域性變數域特性,進行延遲求值,如下: /** * 輸入一

JAVA 8 數式接口--Consumer

沒有 caller func 擴展 cal bject ble span rgs 從JDK8開始java支持函數式編程,JDK也提供了幾個常用的函數式接口,這篇主要介紹Consumer接口。文本介紹的順序依次為: 源碼介紹 使用實例 jdk內對Consumer的典

Java:部分常用式式介面Stream流

1、常用函式式介面-Predicate判斷介面 有時候我們需要對某種型別的資料進行判斷,從而得到一個boolean值結果。這時可以 使用java.util.function.Predicate<T>介面。 1)、抽象方法:判斷“是否”,用於判斷,重寫

Java 8 習慣用語第 3 部分 傳統 for 迴圈的式式替代方案

原文地址:https://www.ibm.com/developerworks/cn/java/j-java8idioms3/index.html Java 8 習慣用語,第 3 部分 傳統 for 迴圈的函式式替代方案 3 個消除複雜迭代中的麻煩的

Java 8 常見式式介面使用簡單示例

簡介 JDK 1.8 API包含了很多內建的函式式介面。之所以提供這些介面,是因為它們有比較多的使用場景,通過結合使用lambda表示式,我們可以很方便地利用這些介面將一些邏輯作為變數傳遞甚至組合起來實現更為複雜的邏輯,就像我們將一些普通類物件作為變數傳遞或者組合起來一樣方便。