技术开发 频道

干货:教你在Java 8中使用Lambda表达式

  【IT168 资讯】您还没掌握Java 8中新的lambda表达式么?本文将帮助您了解如何让lambda表达式正常运行。

  lambda表达式是什么?他们是如何工作的?

  Shivshankar Pal为了理解什么是lambda表达式,搜索了大量的帖子和YouTube视频,在lambda表达式之前他没有使用过任何函数式语言,因此最后他发现还是很难理解lambda表达式。最终,他决定写一篇文章来帮助像他一样的人。

  先来看一些lambda表达式语法:

  1.(int a,int b) - > {return a + b; }

  A. 具有两个参数的功能。

  B. (a,b) - > {return a + b; }的工作原理也是一样的。

  2.() - > System.out.println(“Hello World”);

  A.没有参数的功能。

  3.(String s) - > {System.out.println(s); }

  A. 具有一个参数的功能。

  4.(s) - > System.out.println(s);

  A. 不需要指定参数的类型。

  B. 单个语句不需要大括号。

  5.() - > 42

  6.() - > {return 3.1415};

  相信一些程序员会在看完这些语法之后,已经在使用lambda表达式语法来编写一个“hello world”了,如下所示:

干货:教你在Java 8中使用Lambda表达式

  然后Shivshankar Pal发现:“我们只能使用有Functional接口的lambda表达式”。

  那么什么是函数接口?为什么它对lambda表达式很重要?

  功能接口:功能接口是一个具有单一抽象方法的接口。

  例如:

干货:教你在Java 8中使用Lambda表达式

  你可以看到上面的接口只有一个方法,所以它是一个功能接口。

  现在再来尝试编写程序“hello world”。

  这是一个在lambda表达式之前的旧方法:

干货:教你在Java 8中使用Lambda表达式

干货:教你在Java 8中使用Lambda表达式

  现在来看lambda表达式的方法:

干货:教你在Java 8中使用Lambda表达式

  比较编写相同代码的不同方法,您就可以正确理解lambda能为您做的事。现在有些人已经开始思考或者会问一个问题,为什么他需要一个功能借口来工作?

  这就意味着只要我们想使用lambda表达式做任何事情,都需要先创建一个功能接口。API开发人员已经提供了许多通用的功能接口。这些接口位于java.util.function中。

  让我们来看看java.util.function包,例:

干货:教你在Java 8中使用Lambda表达式

  可以在上面的例子中看到:

  1. 导入 - >我们已经导入了功能包。

  2. 在主方法中,我们创建了一个带有两个泛型类型接口的引用变量。

  3. 这个接口有一个抽象方法,可接受两个参数,并没有任何返回。

  带线程的Lambda表达式

  注意:我们都知道一个“Runnable”接口只有一个 “run()” 方法。因此它也是一个功能接口,可以和lambda表达式一起使用。

  例1:使用线程类型1:

干货:教你在Java 8中使用Lambda表达式

  用lambda表达式来做:

干货:教你在Java 8中使用Lambda表达式

  例2:使用线程类型2:

干货:教你在Java 8中使用Lambda表达式

  用lambda表达式来做:

干货:教你在Java 8中使用Lambda表达式

  从比较可以看出来,lambda使这些东西变得更简单。

  lambda表达式可以为我们做:

  1. 可以定义匿名函数

  2. 可以分配给一个变量

  3. 可以传递给函数

  4. 可以从函数返回

0
相关文章