Java函式式介面Supplier介面例項詳解
阿新 • • 發佈:2020-02-10
這篇文章主要介紹了Java函式式介面Supplier介面例項詳解,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
JDK提供了大量常用的函式式介面以豐富Lambda的典型使用場景,它們主要在 java.util.function 包中被提供。 下面是最簡單的Supplier介面及使用示例。
Supplier介面概述
// Supplier介面原始碼 @FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); }
java.util.function.Supplier<T> 介面僅包含一個無參的方法: T get() 。用來獲取一個泛型引數指定型別的物件資料。由於這是一個函式式介面,這也就意味著對應的Lambda表示式需要“對外提供”一個符合泛型型別的物件資料。如:
import java.util.function.Supplier; public class Demo01Supplier { public static void main(String[] args) { String msgA = "Hello "; String msgB = "World "; System.out.println( getString( () -> msgA + msgB ) ); } private static String getString(Supplier<String> stringSupplier) { return stringSupplier.get(); } }
控制檯輸出:
Hello World
練習:求陣列元素最大值
使用 Supplier 介面作為方法引數型別,通過Lambda表示式求出int陣列中的最大值。介面的泛型使用 java.lang.Integer 類。
import java.util.function.Supplier; public class DemoNumberMax { public static void main(String[] args) { int[] numbers = {100,200,300,400,500,-600,-700,-800,-900,-1000}; int numberMax = arrayMax( () -> { int max = numbers[0]; for (int number : numbers) { if (max < number) { max = number; } } return max; } ); System.out.println("陣列中的最大值為:" + numberMax); } /** * 獲取一個泛型引數指定型別的物件資料 * @param integerSupplier 方法的引數為Supplier,泛型使用Integer * @return 指定型別的物件資料 */ public static Integer arrayMax(Supplier<Integer> integerSupplier) { return integerSupplier.get(); } }
控制檯輸出:
陣列中的最大值為:500
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。