码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda表达式

时间:2020-11-27 10:56:13      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:匿名内部类   过多   color   其他   例子   ide   main   经典   www   

一、函数式接口

   在介绍lambda表达式之前,我们需要了解什么是函数式接口,因为函数式接口是lambda表达式应用最多的地方。

 

1、函数式接口的定义:

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

2、函数式接口例子

public interface Runnable{
   public abstract void run();
}

  上述代码中,我们以Runnable接口为例(是多线程相关接口),这个接口中只包含一个抽象方法,没有其他的方法,这就叫做函数式接口。

 

二、为什么要使用lambda表达式

  • 避免匿名内部类定义过多(也可以说用来替换匿名内部类)
  • 可以让你的代码看起来很简洁
  • 去掉一堆没有意义的代码,只留下核心的部分

 

三、lambda表达式使用方法

1、lambda表达式语法:

  • 第一个部分为一个括号内用逗号分割的形式参数,参数是函数式接口里面方法的参数(parameter 1,parameter 2,....)
  • 第二部分为箭头符号:->
  • 第三部分为方法体,即代码块

(parameter 1,parameter 2,....)-> expresion

  

2、lambda表达式实例

  毫无疑问,实现Runnable接口是函数式接口的经典例子,下面我们用代码介绍lambda表达式的使用方法:

(1)首先我们放出Runnable的源代码

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

  可以看到,Runnable类中只含有一个run()方法,所以是典型的函数式接口。

 

(2)使用匿名内部类

public class Demo2{
    
    public static void main(String[] args) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我使用的是匿名内部类");
            }
        }).start();
        
    }
}

 

(3)使用lambda表达式

public class Demo2{

    public static void main(String[] args) {

        new Thread(()->{ System.out.println("我是lambda表达式"); }).start();

    }
}

  我们可以发现,使用lambda表达式后,十分简洁,用了极少的代码完成了一个类做的事情!

 

四、lambda表达式的简化

(1)、可选类型声明:可以不用声明参数类型,编译器可以统一识别参数值

(2)、可选参数圆括号:0个或1个参数无需圆括号,但多个参数需要定义圆括号

(3)、可选的花括号:如果方法体只包含一个语句,就可以不使用花括号

上述说明的lambda表达式简化,感兴趣的小伙伴可以自己尝试一下~

 

注:如果对匿名内部类不是很了解的同学可以查看我的另一篇博客java内部类   https://www.cnblogs.com/mikellee/p/13995504.html

  好了,今天lambda的讲解就到这里,在这里我只讲解了最典型的应用场景,即用lambda替代匿名内部类。其实lambda表达式还有其他应用场景,比如使用lambda表达式对集合进行迭代、用lambda表达式实现map与reduce等等,感兴趣的同学可以自行查阅哦~

 

Lambda表达式

标签:匿名内部类   过多   color   其他   例子   ide   main   经典   www   

原文地址:https://www.cnblogs.com/mikellee/p/14026514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!