更新時(shí)間:2022-04-19 08:45:05 來源:動(dòng)力節(jié)點(diǎn) 瀏覽943次
Lambda 表達(dá)式是在 Java 8 新特性中添加的。
lambda 表達(dá)式是一小段代碼,它接受參數(shù)并返回一個(gè)值。Lambda 表達(dá)式類似于方法,但它們不需要名稱,并且可以直接在方法體中實(shí)現(xiàn)。
最簡單的 lambda 表達(dá)式包含一個(gè)參數(shù)和一個(gè)表達(dá)式:
parameter -> expression
要使用多個(gè)參數(shù),請將它們括在括號中:
(parameter1, parameter2) -> expression
表達(dá)方式有限。它們必須立即返回一個(gè)值,并且它們不能包含變量、賦值或語句,例如ifor for。為了進(jìn)行更復(fù)雜的操作,可以使用帶有花括號的代碼塊。如果 lambda 表達(dá)式需要返回一個(gè)值,那么代碼塊應(yīng)該有一個(gè)return語句。
(parameter1, parameter2) -> { code block }
Lambda 表達(dá)式通常作為參數(shù)傳遞給函數(shù):
例子:
ArrayList在's方法中使用 lamba 表達(dá)式forEach()來打印列表中的每個(gè)項(xiàng)目:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
如果變量的類型是只有一個(gè)方法的接口,則 Lambda 表達(dá)式可以存儲在變量中。lambda 表達(dá)式應(yīng)具有與該方法相同數(shù)量的參數(shù)和相同的返回類型。Java 內(nèi)置了許多此類接口,例如列表使用的Consumer接口(在java.util包中找到)。
例子:
使用 Java 的Consumer接口將 lambda 表達(dá)式存儲在變量中:
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
要在方法中使用 lambda 表達(dá)式,該方法應(yīng)該有一個(gè)參數(shù),其類型為單方法接口。調(diào)用接口的方法將運(yùn)行 lambda 表達(dá)式:
例子:
創(chuàng)建一個(gè)將 lambda 表達(dá)式作為參數(shù)的方法:
interface StringFunction {
String run(String str);
} } } }
public class Main {
public static void main(String[] args) {
StringFunction exclaim = (s) -> s + "!";
StringFunction ask = (s) -> s + "?";
printFormatted("Hello", exclaim);
printFormatted("Hello", ask);
public static void printFormatted(String str, StringFunction format) {
String result = format.run(str);
System.out.println(result);
初級 202925
初級 203221
初級 202629
初級 203743