真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lambda的入門詳解

1.為什么用lambda

創(chuàng)新互聯(lián)建站是一家專業(yè)提供浦口企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為浦口眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

簡(jiǎn)化我們的操作

舉個(gè)例子

創(chuàng)建一個(gè)線程

new Thread(new Runnable() {

@Override

public void run() {

System.out.println("hh");

}

}).start();

以前我們快速創(chuàng)建一個(gè)線程要這樣

現(xiàn)在用lambda

new Thread(()-> System.out.println("lambda-->hh")).start();

一個(gè)更重要的原因是Java 以后為了更好的函數(shù)式編程

2.lambda怎么用

2.1 lambda的使用場(chǎng)景

lambda只能用在函數(shù)式接口,函數(shù)式接口就是一個(gè)接口里面只有一個(gè)抽象方法

* @author Arthur van Hoff

* @see java.lang.Thread

* @see java.util.concurrent.Callable

* @since JDK1.0

*/

@FunctionalInterface

public interface Runnable {

/**

* When an object implementing interface Runnable is used

* to create a thread, starting the thread causes the object's

* run method to be called in that separately executing

* thread.

*

* The general contract of the method run is that it may

* take any action whatsoever.

*

* @see java.lang.Thread#run()

*/

public abstract void run();

}

可以通過@FunctionalInterface來表示是一個(gè)函數(shù)式接口

Java 為我們創(chuàng)建了很多常用的函數(shù)式接口,不用我們一個(gè)一個(gè)來創(chuàng)建

四大內(nèi)置函數(shù)式接口

Consumer< T > 消費(fèi)性 接口: void accept(T t);

Supplier< T > 供給型接口 : T get();

Function< T , R > 函數(shù)式接口 : R apply (T t);

Predicate< T > 斷言形接口 : boolean test(T t);

2.2 使用

(參數(shù))->{方法體}

new Thread(()-> { System.out.println("lambda-->hh");}).start();

其實(shí)到這就可以熟練的用lambda,但是它還能簡(jiǎn)化,你說氣不氣=。=

1.一個(gè)參數(shù)時(shí)可省略()

Consumer consumer = x -> System.out.println(x);

consumer.accept("1個(gè)參數(shù)省略()");

2.方法體只有一條語句省略{}

== 不管它是否需要有返回值==

Function function= x-> x;

Integer apply = function.apply(1);

System.out.println(apply);

3.類型推斷

lambda 表達(dá)式的參數(shù)類型可省略不寫

聰明的你肯定發(fā)現(xiàn)了為什么參數(shù) 不需要寫類型,為什么不需要,Java會(huì)根據(jù)泛型來推斷

你也可以指定參數(shù)的類型,但是沒必要

Consumer consumer = (String x) -> System.out.println(x);

3.方法引用

System.out.println("呼呦呦");

public void println(String x) {

synchronized (this) {

print(x);

newLine();

} 鄭州人流醫(yī)院哪家好 http://mobile.zhongyuan120.com/

}

println是一個(gè)參數(shù)沒有返回

這和Consumer 消費(fèi)者接口很符合啊,下面這樣寫可不可以簡(jiǎn)化啊(就nm事多)

Consumer consumer = x -> System.out.println(x);

簡(jiǎn)化版

Consumer consumer1 = System.out::println;

方法引用 參數(shù)與返回值需要一致

/**

* 方法引用 如果lambda體中有方法已經(jīng)實(shí)現(xiàn),我們可以使用 方法引用 參數(shù)與返回值需要一致

*

* 主要有3種

* 對(duì)象::實(shí)例方法

* 類::靜態(tài)方法

* 類::實(shí)例方法

*

* 構(gòu)造器引用

* 調(diào)用的構(gòu)造方法與傳入的參數(shù)有關(guān)

*

* 數(shù)組引用

* Type[]:new;

*/


當(dāng)前題目:lambda的入門詳解
分享路徑:http://weahome.cn/article/jpgihd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部