使用lambda表示式的條件:必須是函式式介面
什麼是函式式介面?
簡單來說, 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。
inte***ce
animal
通過**方式一步一步推導出lambda表示式如何簡化來的
public
class
demo01
}public
static
void
main
(string[
] args)
}//3.使用區域性內部類
dog =
newdog3()
; dog.
eat(
"辣手摧花");
//4.使用匿名內部類
dog =
newanimal()
};dog.
eat(
"白菜花");
//5.使用lambda表示式
dog =
(string name)
->
; dog.
eat(
"韭菜花");
lambda表示式簡寫,如果只有乙個引數,則可以省略引數型別以及();如果**塊只有一行語句,則可以省略{}
dog = name-
> system.out.
println
(name+
"正在吃東西……");
dog.
eat(
"韭菜花");
}}/** * 最傳統的實現類
*/class
dogimplements
animal
}inte***ce
animal
執行結果
小花正在吃東西……
翠花正在吃東西……
辣手摧花正在吃東西……
白菜花正在吃東西……
韭菜花正在吃東西……
韭菜花正在吃東西……
總結:
1. 如果方法入參只有乙個引數,則可以省略引數型別以及();否則不能省略()
inte***ce
animal
2. 如果方法體只有一行**執行,則可以省略{};否則不能省略
dog = name-
> system.out.
println
(name+
"正在吃東西……");
//省略了引數型別以及()
dog.
eat(
"韭菜花"
);
3. 如果有多個入參,引數型別也可以省略,如果省略則必須都省略,這時必須使用()包裹入參
inte***ce
animal
dog =
(name,2)
-> system.out.
println
(name+
"正在吃東西……"
);
lambda 表示式入門
lambda表示式由三部分組成 paramaters 類似方法中的形參列表,這裡的引數是函式式介面裡的引數。這裡的引數型別可以明確的宣告也可不宣告而由jvm隱含的推斷1。另外當只有乙個推斷型別時可以省略掉圓括號。可理解為 被用於 的意思 方法體 可以是表示式也可以 塊,是函式式介面裡方法的實現。塊可...
lambda表示式 lambda表示式
1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...
lambda表示式入門例子
說是函式式介面。其實也可以理解為匿名內部類。最簡單的例子 functionalinte ce 表示函式式介面,編譯的時候會強制校驗 public inte ce animal 帶引數的例子 public inte ce count 省略寫法 functionalinte ce public inte...