自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java8函數(shù)式接口編程入門(mén),簡(jiǎn)單幾行讓你的代碼更優(yōu)雅

開(kāi)發(fā) 前端
JDK8中新增了一個(gè)很重要的包:Java.util.function,在這個(gè)包下的所有接口都是函數(shù)式接口。通過(guò)函數(shù)式接口,可以極大的簡(jiǎn)化我們的代碼,讓我們的代碼看起來(lái)更簡(jiǎn)潔。

函數(shù)式接口(Functional Interface)就是一個(gè)有且僅有一個(gè)抽象方法,但是可以有多個(gè)非抽象方法的接口。

JDK8中新增了一個(gè)很重要的包:java.util.function,在這個(gè)包下的所有接口都是函數(shù)式接口。通過(guò)函數(shù)式接口,可以極大的簡(jiǎn)化我們的代碼,讓我們的代碼看起來(lái)更簡(jiǎn)潔。

包中的接口雖然多,但是大致可以分為4大類(lèi),分別是Consumer(消費(fèi)型)、Supplier(供給型)、Predicate(謂詞型)、Function(功能型)。

函數(shù)式接口雖然看起來(lái)很抽象,但是一旦理解了其原理,使用起來(lái)還是很簡(jiǎn)單的。

1、Consumer消費(fèi)型

Consumer接口會(huì)接受一個(gè)輸入?yún)?shù),但是不會(huì)有返回結(jié)果,一般用于對(duì)某個(gè)輸入對(duì)象做一些加工操作。

Consumer的一個(gè)經(jīng)典使用場(chǎng)景就是集合的foreach方法了。

ArrayList<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
list.forEach(x -> {
System.out.print(x + ",");
});

點(diǎn)開(kāi)foreach方法可以看到該方法接受了一個(gè)Consumer<? super E> action參數(shù)。

ArrayList的foreach實(shí)現(xiàn)

應(yīng)用示例:

2、Supplier供給型

Supplier接口不接受參數(shù),用于生產(chǎn)我們需要的數(shù)據(jù)。

Supplier的應(yīng)用很簡(jiǎn)單,一般用于產(chǎn)生隨機(jī)數(shù),訂單號(hào),工廠生產(chǎn)對(duì)象等等。

3、Predicate謂詞型

Predicate接受一個(gè)輸入?yún)?shù) T,返回一個(gè)布爾值結(jié)果,常用于數(shù)據(jù)的校驗(yàn)。

4、Function功能型

Function的使用也比較廣泛,它接受一個(gè)參數(shù),并且會(huì)對(duì)參數(shù)進(jìn)行計(jì)算加工產(chǎn)生另一個(gè)參數(shù)。

最后再說(shuō)一下函數(shù)式編程與命令式編程的區(qū)別:

命令式編程就是我們要告訴代碼怎么做,比如要實(shí)現(xiàn)一些功能,那就把這個(gè)功能的詳細(xì)過(guò)程通過(guò)代碼一行行的寫(xiě)好。

函數(shù)式編程就是我們要告訴代碼做什么,是一種方法論,說(shuō)白了就是調(diào)用某個(gè)API去編程。

總得來(lái)說(shuō)呢,函數(shù)式的編程確實(shí)可以簡(jiǎn)化我們的代碼,讓我們以更簡(jiǎn)單的方式去完成某些比較復(fù)雜的功能,但是也有些朋友會(huì)覺(jué)得函數(shù)式編程過(guò)于抽象,不好理解。

不知道大家在平時(shí)項(xiàng)目中使用函數(shù)式編程的頻率有多少呢?

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-11-23 13:50:00

Python代碼

2023-07-10 09:39:02

lambdaPython語(yǔ)言

2022-03-08 06:41:35

css代碼

2020-04-03 14:55:39

Python 代碼編程

2025-04-21 17:55:25

2024-05-24 10:51:51

框架Java

2019-09-29 16:17:25

Java代碼性能編程語(yǔ)言

2022-04-10 10:41:17

ESLint異步代碼

2020-05-25 16:25:17

Java8Stream函數(shù)式接口

2015-09-30 09:34:09

java8字母序列

2020-09-22 11:00:11

Java技術(shù)開(kāi)發(fā)

2023-07-26 07:13:55

函數(shù)接口Java 8

2024-06-21 09:19:45

代碼接口重復(fù)請(qǐng)求開(kāi)發(fā)

2020-10-16 10:07:03

Lambda表達(dá)式Java8

2025-02-10 00:25:00

命令模式擴(kuò)展機(jī)制系統(tǒng)

2022-09-19 15:02:24

C語(yǔ)言

2023-10-13 07:36:58

Java函數(shù)式編程

2024-02-28 08:37:28

Lambda表達(dá)式Java函數(shù)式接口

2022-11-18 08:32:23

spring參數(shù)解析器

2017-09-27 16:09:29

代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)