Java學習筆記(9)

lambda表達式:ide

只定義了單個方法的接口,稱爲單一抽象方法(Single Abstract Method, SAM)接口;因爲此接口經過調用,完成某一功能,因此也稱爲功能接口,此類接口的實例稱爲功能對象函數

lambda表達的做用是至關於一個函數,編譯器把lambda表達式編譯爲一個對象,該對象是一個內部匿名類的實例,此匿名類實現了功能接口,只有一個方法,此方法的參數即爲lambda表達式的參數,此方法的方法體即爲lambda表達式的方法體spa

由上述能夠推出以下結論:若是一個方法的參數是功能接口類型,能夠用lambda表達式做爲參數傳給此方法code

 

因此若是一個方法的接收參數爲功能接口類型,能夠經過以下三種方式傳參數,其中接口上@FunctionInterface註釋,代表該接口是一個功能接口對象

 1 public void Run(){
 2         setAction(new InnerClass());
 3 
 4         setAction(new T1() {
 5             @Override
 6             public void test() {
 7                 System.out.println("匿名類方式");
 8             }
 9         });
10 
11         setAction(() -> System.out.println("lambda表達式方式"));
12     }
13 
14     public void setAction(T1 t1) {
15         t1.test();
16     }
17 
18     class InnerClass implements T1 {
19         @Override
20         public void test() {
21             System.out.println("內部類方式");
22         }
23     }
24 
25     @FunctionalInterface
26     interface T1 {
27         void test();
28     }
相關文章
相關標籤/搜索