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     }
相关文章
相关标签/搜索