一 .概述
暂时对应我来说,lambda表达式带给我的仅仅只是代码写的更少,但是阅读性却差了很多.
没感觉好处多了多少,但是看见lambda出现的次数变多了,因此学习一下这个.
二 .演示一下lamda
@Test public void test() { new Thread(() -> { for(;;) System.out.println("running ...."); }) .start(); }
现在我们展示了一下lambda表达式最初的结构,我们也没有感觉到什么特别的地方,代码确实少了一写.
三 . 函数接口
在java8之中引入了函数接口的概念,lambda使用 前提就是函数式接口.
函数式接口:
如何一个接口中只有一个抽象方法,那么这个接口就是函数式接口.
interface lambda{ void run(); }
上面的一个接口就是一个函数式接口,另外在java8之中有一个声明式的注解可以标示函数式接口.
@FunctionalInterface interface lambda{ void run(); }
上面的代码仅仅多了一个注解,这个注解的作用就是标记该接口中仅仅只能有一个抽象方法.
我们查看Runnable接口.
@FunctionalInterface public interface Runnable {}
我们发现Runnable接口也被标记为了函数式接口了.
四 .函数式接口的使用
上面讨论到函数式接口仅仅只能有一个抽象方法.下面我们来分析一下方法的组成.
在接口中的抽象方法:
返回值 方法名 (参数列表 ) 异常声明.
在函数式接口之中,方法的名字没有什么意义了.
现在我们需要关注的就是:
[1] 方法的返回值
[2]方法的参数列表
[3] 异常声明
lambda表达式的基本结构:
(参数1 ,参数2) -> {
语句 ;
return ;
}
当然了,我们还能更加的精简代码,在这里就不去说了,都是一些特殊的情况.
@Test public void test2() { new Thread( () ->System.out.println("hello!") ).start();; }
上面的代码就更加精简了,但是我们需要注意的解释阅读性的问题了.
五 . lambda表达式的使用注意点
lambda表达式已经够简单的了,我们最好写全一点,不然阅读星是在是太差了.