美文网首页
Lamda表达式

Lamda表达式

作者: Binary_r | 来源:发表于2020-11-29 21:37 被阅读0次

为什么要使用lamda表达式

1、避免匿名内部类定义过多
2、使代码看起来更简洁
3、去掉一堆无意义的代码,只留下核心的逻辑代码

资料补充: 匿名内部类
没有类的名称,必须借助接口或者父类

public class HelloWorldAnonymousClasses {
 2 
 3     /**
 4      * 包含两个方法的HelloWorld接口
 5      */
 6     interface HelloWorld {
 7         public void greet();
 8         public void greetSomeone(String someone);
 9     }
10 
11     public void sayHello() {
12 
13         // 1、局部类EnglishGreeting实现了HelloWorld接口
14         class EnglishGreeting implements HelloWorld {
15             String name = "world";
16             public void greet() {
17                 greetSomeone("world");
18             }
19             public void greetSomeone(String someone) {
20                 name = someone;
21                 System.out.println("Hello " + name);
22             }
23         }
24 
25         HelloWorld englishGreeting = new EnglishGreeting();
26 
27         // 2、匿名类实现HelloWorld接口
28         HelloWorld frenchGreeting = new HelloWorld() {
29             String name = "tout le monde";
30             public void greet() {
31                 greetSomeone("tout le monde");
32             }
33             public void greetSomeone(String someone) {
34                 name = someone;
35                 System.out.println("Salut " + name);
36             }
37         };
38 
39         // 3、匿名类实现HelloWorld接口
40         HelloWorld spanishGreeting = new HelloWorld() {
41             String name = "mundo";
42             public void greet() {
43                 greetSomeone("mundo");
44             }
45             public void greetSomeone(String someone) {
46                 name = someone;
47                 System.out.println("Hola, " + name);
48             }
49         };
50         
51         englishGreeting.greet();
52         frenchGreeting.greetSomeone("Fred");
53         spanishGreeting.greet();
54     }
55 
56     public static void main(String... args) {
57         HelloWorldAnonymousClasses myApp = new HelloWorldAnonymousClasses();
58         myApp.sayHello();
59     }
60 }

运行结果

1 Hello world
2 Salut Fred
3 Hola, mundo

该例中用局部类来初始化变量englishGreeting,用匿类来初始化变量frenchGreeting和spanishGreeting,两种实现之间有明显的区别:

1)局部类EnglishGreetin继承HelloWorld接口,有自己的类名,定义完成之后需要再用new关键字实例化才可以使用;
2)frenchGreeting、spanishGreeting在定义的时候就实例化了,定义完了就可以直接使用;
3)匿名类是一个表达式,因此在定义的最后用分号";"结束。

函数式接口

1、任何接口,如果只包含唯一一个抽象方法,那么他就是函数式接口
2、对于函数式接口,可以使用Lamda表达式来创建该接口的API

Lamda表达式:

1、只有一行代码的时候才能简化为一行class = a -> System.out.println(a)
2、前提条件必须是函数式接口
3、多个参数时,也可以去掉类型,必须加上括号

相关文章

  • Java8 One---- Lamda表达式

    1 Lamda表达式 lamda表达式构成, 参数,箭头,方法体.为什么使用lamda表达式, 最只直观的就是简洁...

  • JDK1.8之Lamda表达式(匿名内部类优化)

    1.Lamda表达式的作用 例如一个匿名内部类的使用,使用Lamda表达式可以简化。 图一Lamda表达式和图二的...

  • Java8(二)之走进Stream

    本篇文章是基于上一篇Lamda表达式的基础上的内容,因为其中涉及了较多的Lamda语法。如果对于Lamda表达式没...

  • 函数式编程

    Lamda表达式 从JDK1.8开始为了简化使用者进行代码的开发,专门提供有Lamda表达式的支持,利用此操作形式...

  • Java8教程

    本次只讲三个东西,Lamda表达式、函数引用、函数式接口。 一、Lamda表达式 也就是说以前需要用匿名实现类来做...

  • 15. Lamda表达式

    Lamda表达式写起来可以让代码很简单。以两个数字求和为例 上面的代码一个是普通的函数,一个是Lamda表达式。它...

  • Lamda 表达式作用域(Lambda Scopes)

    Lamda 表达式作用域(Lambda Scopes) 访问局部变量 我们可以直接在 lambda 表达式中访问外...

  • Java8新特性

    1.Lamda表达式 Lambda表达式的作用主要是用来简化接口的创建,使用Lambda表达式接口必须是函数式接口...

  • Lamda表达式

    转自:https://www.cnblogs.com/hyyq/p/7425666.html 基础介绍 Lamda...

  • lamda表达式

    // 2. 接收一个参数(数字类型),返回其2倍的值x -> 2 * x // 3. 接受2个参数(数字),并返回...

网友评论

      本文标题:Lamda表达式

      本文链接:https://www.haomeiwen.com/subject/qqukwktx.html