Java SE 8的一個重要增加是lambda表達式函數。使用表達式可以清晰簡潔地表達方法介面。集合庫非常有幫助。集合可以被迭代、過濾和提取資料以實現有用的目的。為了實現函數式接口,廣泛使用lambda表達式。它節省了很多代碼。 Lambda表達式允許我們在不重新定義方法的情況下提供實作。只有在此處透過編寫程式碼才會形成實作程式碼。編譯器不會建立一個.class文件,因為Java lambda表達式被視為函數。
@FunctionalInterface是一個Java註解,它將一個介面宣告為函數式介面。函數式介面是只有一個抽象方法的介面。 Lambda表達式可以讓你實作這個函數式介面。
它提供了功能介面的實作。
它提供了更少的編碼。
(argument-list) { //body }
它由三個組成部分組成−
Argument-List − 可以為空,也可以是非空的
Arrow-Taken − 用於將參數列表和表達式的主體連接起來
Body − 包含lambda表達式的表達式與語句
() { // body of no parameter lambda }
(p1) { // body of single parameter lambda }
(p1,p2) { //body of multiple parameter lambda }
@FunctionalInterface //It is optional interface Drawable{ public void draw(); } public class LambdaExpressionExample2 { public static void main(String[] args) { int width=10; //with lambda Drawable d2=()->{ System.out.println("Drawing "+width); }; d2.draw(); } }
Drawing 10
interface Drawable{ public void draw(); } public class LambdaExpressionExample { public static void main(String[] args) { int width=10; //without lambda, Drawable implementation using anonymous class Drawable d=new Drawable(){ public void draw(){System.out.println("Drawing "+width);} }; d.draw(); } }
Drawing 10
interface Sayable{ public String say(); } public class LambdaExpressionExample3{ public static void main(String[] args) { Sayable s=()->{ return "Don’t settle for average."; }; System.out.println(s.say()); } }
Don’t settle for average
interface Sayable { public String say(String name); } public class LambdaExpressionExample4{ public static void main(String[] args) { // Lambda expression with single parameter. Sayable s1=(name)->{ return "Hello, "+name; }; System.out.println(s1.say("World")); // You can omit function parentheses Sayable s2= name ->{ return "Hello, "+name; }; System.out.println(s2.say("World")); } }
Hello, World Hello, World
interface Addable{ int add(int a,int b); } public class LambdaExpressionExample5{ public static void main(String[] args) { // Multiple parameters in lambda expression Addable ad1=(a,b)->(a+b); System.out.println(ad1.add(20,20)); // Multiple parameters with data type in lambda expression Addable ad2=(int a,int b)->(a+b); System.out.println(ad2.add(200,200)); } }
40 400
使用表達式,Java SE 8透過lambda表達式功能提供了一個有價值的補充。以清晰簡潔的方式表達方法介面已經變得輕而易舉。迭代、過濾和提取資料是集合庫提供的許多實際用途之一。實作函數介面已經廣泛使用了lambda表達式,並且它能夠大幅減少程式碼量。 lambda表達式的一個優秀特性是能夠在不冗餘地重新定義方法的情況下給出實作。在這個空間中,編寫給予實作程式碼形式。編譯器不會建立一個.class文件,因為函數被視為Java的lambda表達式。
以上是使用Lambda表達式的並發程式設計方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!