Java8————Lambda表达式(一)
本博客翻譯自官方教程《Syntax of Lambda Expressions》
Lambda表達(dá)式的語(yǔ)法
一個(gè)Lambda表達(dá)式由以下部分構(gòu)成:
1、圓括號(hào)內(nèi)的一個(gè)由逗號(hào)分隔的參數(shù)列表。
interface CheckPerson {boolean test(Person p); }CheckPerson.test方法包含一個(gè)參數(shù),p,這個(gè)參數(shù)代表一個(gè)Person類的實(shí)例。
注意:你可以在Lambda表達(dá)式中省略參數(shù)的類型。另外,如果只有一個(gè)參數(shù),也可以省略參數(shù)列表的括號(hào)。例如,下面的Lambda表達(dá)式也是合法的:
p -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18&& p.getAge() <= 252、箭頭標(biāo)志,->
3、一個(gè)主體,它或是一個(gè)單獨(dú)的表達(dá)式或是一個(gè)語(yǔ)句塊。
如果你指定了一個(gè)單獨(dú)的表達(dá)式,那么Java運(yùn)行時(shí)會(huì)估測(cè)表達(dá)式并返回它的值。要么,你可以使用return 語(yǔ)句。
p -> {return p.getGender() == Person.Sex.MALE&& p.getAge() >= 18&& p.getAge() <= 25; }一個(gè)return 語(yǔ)句并不是一個(gè)表達(dá)式,在Lambda表達(dá)式中,你必須將多個(gè)語(yǔ)句用大括號(hào)封閉起來(lái)。但是,你不必把一個(gè)void方法調(diào)用封閉起來(lái)。例如下面的Lambda表達(dá)式也是合法的。
Email -> System.out.println(email)注意Lambda表達(dá)式看起來(lái)非常像一個(gè)方法聲明,你可以認(rèn)為L(zhǎng)ambda表達(dá)式是一個(gè)匿名方法,即沒(méi)有名字的方法。
public class Calculator {interface IntegerMath {int operation(int a, int b); }public int operateBinary(int a, int b, IntegerMath op) {return op.operation(a, b);}public static void main(String... args) {Calculator myApp = new Calculator();IntegerMath addition = (a, b) -> a + b;IntegerMath subtraction = (a, b) -> a - b;System.out.println("40 + 2 = " +myApp.operateBinary(40, 2, addition));System.out.println("20 - 10 = " +myApp.operateBinary(20, 10, subtraction)); } }方法operateBinary對(duì)兩個(gè)Integer的操作數(shù)進(jìn)行計(jì)算。操作本身指定為了一個(gè)IntegerMath的實(shí)例。例子中使用了Lambda表達(dá)式定義了兩個(gè)操作:addition 和 substraction。例子輸出如下:
40 + 2 = 42 20 - 10 = 10?
總結(jié)
以上是生活随笔為你收集整理的Java8————Lambda表达式(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 多态判断非空_Java 多态
- 下一篇: Java8————方法引用