• λ希臘字母表中排序第十一位的字Lambda,
• 避免匿名內部類定義過多
• 其實質屬於函數式編程的概念
(params) -> expression
(params) -> statement
(params) -> { statements}
例:
package com.sxt.thread; /** * lambda推導 +參數+返回值 * @author:裴新 * */ public class LambdaTest03 { public static void main(String[] args) { IInterest interest = (int a,int c)-> { System.out.println("i like lambda -->"+(a+c)); return a+c; }; interest.lambda(100,200); interest = (a,c)-> { System.out.println("i like lambda -->"+(a+c)); return a+c; }; interest.lambda(200,200); interest = (a,c)-> { return a+c; }; interest = (a,c)-> a+c; interest = (a,c)-> 100; System.out.println(interest.lambda(10, 20)); } } interface IInterest{ int lambda(int a,int b); } //外部類 class Interest implements IInterest{ @Override public int lambda(int a,int c) { System.out.println("i like lambda -->"+(a+c)); return a+c; } }
package com.sxt.thread; /** * Lambda表達式 簡化線程(用一次)的使用 * @author 裴新 * */ public class LambdaThread { //靜態內部類 static class Test implements Runnable{ public void run() { for(int i=0;i<20;i++) { System.out.println("一邊聽歌"); } } } public static void main(String[] args) { //new Thread(new Test()).start(); //局部內部類 class Test2 implements Runnable{ public void run() { for(int i=0;i<20;i++) { System.out.println("一邊聽歌"); } } } new Thread(new Test2()).start(); //匿名內部類 必須借助接口或者父類 new Thread(new Runnable() { public void run() { for(int i=0;i<20;i++) { System.out.println("一邊聽歌"); } } }).start(); //jdk8 簡化 lambda表達式 new Thread(()-> { for(int i=0;i<20;i++) { System.out.println("一邊聽歌"); } } ).start(); } }