Java函數(shù)式接口Supplier接口實(shí)例詳解
這篇文章主要介紹了Java函數(shù)式接口Supplier接口實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
JDK提供了大量常用的函數(shù)式接口以豐富Lambda的典型使用場(chǎng)景,它們主要在 java.util.function 包中被提供。 下面是最簡(jiǎn)單的Supplier接口及使用示例。
Supplier接口概述
// Supplier接口源碼 @FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); }
java.util.function.Supplier<T> 接口僅包含一個(gè)無(wú)參的方法: T get() 。用來(lái)獲取一個(gè)泛型參數(shù)指定類型的對(duì)象數(shù)據(jù)。由于這是一個(gè)函數(shù)式接口,這也就意味著對(duì)應(yīng)的Lambda表達(dá)式需要“對(duì)外提供”一個(gè)符合泛型類型的對(duì)象數(shù)據(jù)。如:
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(); } }
控制臺(tái)輸出:
Hello World
練習(xí):求數(shù)組元素最大值
使用 Supplier 接口作為方法參數(shù)類型,通過(guò)Lambda表達(dá)式求出int數(shù)組中的最大值。接口的泛型使用 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("數(shù)組中的最大值為:" + numberMax); } /** * 獲取一個(gè)泛型參數(shù)指定類型的對(duì)象數(shù)據(jù) * @param integerSupplier 方法的參數(shù)為Supplier,泛型使用Integer * @return 指定類型的對(duì)象數(shù)據(jù) */ public static Integer arrayMax(Supplier<Integer> integerSupplier) { return integerSupplier.get(); } }
控制臺(tái)輸出:
數(shù)組中的最大值為:500
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中ThreadLocal線程變量的實(shí)現(xiàn)原理
本文主要介紹了Java中ThreadLocal線程變量的實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Java中BigDecimal比較大小的3種方法(??compareTo()、??equals()??和??compar
這篇文章主要給大家介紹了關(guān)于Java中BigDecimal比較大小的3種方法,方法分別是??compareTo()、??equals()??和??compareTo()??,在Java中使用BigDecimal類來(lái)進(jìn)行精確的數(shù)值計(jì)算,需要的朋友可以參考下2023-11-11SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫(kù)
這篇文章主要介紹了SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Tornadofx學(xué)習(xí)筆記之IconTextFx開源庫(kù)整合5000+個(gè)字體圖標(biāo)
這篇文章主要介紹了Tornadofx學(xué)習(xí)筆記之IconTextFx開源庫(kù)整合5000+個(gè)字體圖標(biāo)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12深入理解 Java 中的 Switch 語(yǔ)句示例詳解
在Java編程中,switch語(yǔ)句通過(guò)表達(dá)式值來(lái)執(zhí)行不同代碼塊,本文介紹switch語(yǔ)法、案例、注意事項(xiàng),以及與if語(yǔ)句的對(duì)比,包括基本語(yǔ)法、關(guān)鍵字、表達(dá)式、case常量、break和default的使用,以及如何根據(jù)輸入的字符輸出星期、大小寫轉(zhuǎn)換、成績(jī)判斷和季節(jié)判斷等實(shí)際應(yīng)用場(chǎng)景2024-10-10SpringMVC中ModelAndView用法小結(jié)
本文主要介紹了SpringMVC中ModelAndView用法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12springboot2.x實(shí)現(xiàn)oauth2授權(quán)碼登陸的方法
這篇文章主要介紹了springboot2.x實(shí)現(xiàn)oauth2授權(quán)碼登陸的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08jdk中String類設(shè)計(jì)成final的原由
為什么jdk中把 String 類設(shè)計(jì)成final,主要是為了“ 效率 ”和“安全性”的緣故,若 String 允許被繼承, 由于它的高度被使用率, 可能會(huì)降低程序的性能,所以String被定義成final,需要了解的朋友可以參考下2013-01-01