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

Java?8?中?Function?接口使用方法介紹

 更新時間:2022年06月20日 10:37:10   作者:??sparkchan????  
這篇文章主要介紹了Java?8中?Function接口使用方法介紹,Java8中提供了一個函數(shù)式接口Function,這個接口表示對一個參數(shù)做一些操作然后返回操作之后的值

Java 8 中 Function 接口的介紹

Java 8 中提供了一個函數(shù)式接口 Function,這個接口表示對一個參數(shù)做一些操作然后返回操作之后的值。這個接口的有一個抽象方法 apply,這個方法就是表明對參數(shù)做的操作。

// Java Function 接口的定義
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);

default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
    Objects.requireNonNull(before);
    return (V v) -> apply(before.apply(v));
}

default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
    Objects.requireNonNull(after);
    return (T t) -> after.apply(apply(t));
}

static <T> Function<T, T> identity() {
    return t -> t;
}

Function 接口的用法

apply 方法的使用方式如下:

Function<Integer, Integer> add = p -> p + 10;
Integer result = add.apply(10);
// 這里會輸出 20,因為這個函數(shù)定義的操作時把參數(shù)加上 10 后返回
System.out.println(result);

compose方法的參數(shù)也是一個Function對象。在 A 這個Function上調(diào)用compose方法時傳入 B 這個Function對象,然后得到一個新的Function對象 C。C 這個Function對象的實現(xiàn)邏輯是先帶哦用 B 的apply方法對參數(shù)進行操作,將得到的結(jié)果再作為參數(shù)傳遞給 A 這個Function對象的apply 法,然后返回執(zhí)行后的結(jié)果。

addThen方法也是類似的原理,只不過內(nèi)部執(zhí)行方法的順序不一樣而已。

Function<Integer, Integer> multiplyTen = a -> a * 10;
Function<Integer, Integer> addTen = a -> a + 10;
// 先增加 10,然后再乘 10,輸出結(jié)果 110
Function<Integer, Integer> addTenThenMultiplyTen = multiplyTen.compose(addTen);
System.out.println(addTenThenMultiplyTen.apply(1));

// 先乘 10,然后再加 10,輸出結(jié)果 20
Function<Integer, Integer> multiplyTenAddTenThen = multiplyTen.andThen(addTen);
System.out.println(multiplyTenAddTenThen.apply(1));

Function 接口的實例

public class CheckUtils {
    private static final Function<String, String> lengthCheck = params -> {
        if (params.length() > 100) {
            throw new RuntimeException("Length exceed max limit.");
        }
        return params;
    };

    private static final Function<String, String> invalidCharacterCheck = str -> {
        if (!str.matches("^[a-f,A-F]$")) {
            throw new RuntimeException("Contains invalid character.");
        }
        return str;
    };
    /**
     * 這里的公共方法組合了該類中的基本校驗邏輯構(gòu)成一個復(fù)合的邏輯
     */
    public static void checkStringLengthAndPhoneNumber(String string) {
        invalidCharacterCheck.compose(lengthCheck).apply(string);
    }
}

到此這篇關(guān)于Java 8 中 Function 接口使用方法介紹的文章就介紹到這了,更多相關(guān)Java Function 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Spring Boot上傳文件功能

    使用Spring Boot上傳文件功能

    上傳文件是互聯(lián)網(wǎng)中常應(yīng)用的場景之一,最典型的情況就是上傳頭像等,今天就帶著大家做一個Spring Boot上傳文件的小案例,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-01-01
  • Java的幾種文件拷貝方式示例詳解

    Java的幾種文件拷貝方式示例詳解

    在Java編程中文件操作是常見且重要的任務(wù)之一,其中文件拷貝是一種基本操作,這篇文章主要給大家介紹了關(guān)于Java幾種文件拷貝方式的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-08-08
  • Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    這篇文章主要介紹了Java如何取掉json數(shù)據(jù)中值為null的屬性字段,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中鎖的實現(xiàn)和內(nèi)存語義淺析

    Java中鎖的實現(xiàn)和內(nèi)存語義淺析

    這篇文章主要給大家介紹了關(guān)于Java中鎖的實現(xiàn)和內(nèi)存語義的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • SpringBoot中的@ConfigurationProperties注解解析

    SpringBoot中的@ConfigurationProperties注解解析

    這篇文章主要介紹了SpringBoot中的@ConfigurationProperties注解解析,Spring源碼中大量使用了ConfigurationProperties注解,通過與其他注解配合使用,能夠?qū)崿F(xiàn)Bean的按需配置,該注解可以放在類上,也可以放在方法上,需要的朋友可以參考下
    2023-11-11
  • idea 解決用骨架創(chuàng)建項目過慢的操作方式

    idea 解決用骨架創(chuàng)建項目過慢的操作方式

    這篇文章主要介紹了idea 解決用骨架創(chuàng)建項目過慢的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • mybatis-plus如何禁用一級緩存的方法

    mybatis-plus如何禁用一級緩存的方法

    這篇文章主要介紹了mybatis-plus如何禁用一級緩存的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring AOP實現(xiàn)記錄操作日志

    Spring AOP實現(xiàn)記錄操作日志

    這篇文章主要為大家詳細(xì)介紹了Spring AOP實現(xiàn)記錄操作日志,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • springboot關(guān)于容器啟動事件總結(jié)

    springboot關(guān)于容器啟動事件總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于springboot容器啟動事件相關(guān)知識點,需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • Java中的阻塞隊列詳細(xì)介紹

    Java中的阻塞隊列詳細(xì)介紹

    這篇文章主要介紹了Java中的阻塞隊列詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-11-11

最新評論

舞钢市| 颍上县| 富阳市| 永丰县| 双流县| 泾源县| 太谷县| 承德市| 抚顺县| 麦盖提县| 宣武区| 平凉市| 广西| 景东| 台北县| 九龙坡区| 庐江县| 岳普湖县| 滦平县| 乌鲁木齐市| 蚌埠市| 彭州市| 克东县| 阿鲁科尔沁旗| 浦北县| 淄博市| 泰顺县| 丹凤县| 南宁市| 临漳县| 芦山县| 石门县| 望都县| 博兴县| 加查县| 林甸县| 怀集县| 涿鹿县| 乐陵市| 三门县| 鲁山县|