欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lambda表达式。

程序员文章站 2022-03-25 20:17:08
函数式编程思想: 面向对象思想:做一件事,先找能解决这件事的对象,然后调用该对象相应方法。 面向过程思想:只要能获取到结果,怎么做的不重要,重视结果,不重视过程。 冗余的代码: 对于Runnable的匿名内部类用法可以分析出: 0、Thread类需要Runnable接口作为参数,其中run()为核心 ......

函数式编程思想:

面向对象思想:做一件事,先找能解决这件事的对象,然后调用该对象相应方法。

面向过程思想:只要能获取到结果,怎么做的不重要,重视结果,不重视过程。

冗余的代码:

 public static void main(string[] args) {
    new thread(new runnable() {
        @override
        public void run() {
            system.out.println("新线程:"+
            thread.currentthread().getname());
        }
    }).start();
    }

对于runnable的匿名内部类用法可以分析出:

 0、thread类需要runnable接口作为参数,其中run()为核心代码。

1、为了指定run()方法体,就必须使用runnable接口的实现类。

2、为了简化代码,可以用匿名内部类,但run()的方法名称,参数,返回值等也必须再写一遍

3、而实际上,只有run()方法体才是关键所在。

编程思想转化:做什么,而不是怎么做。

其实我们并不希望创建一个匿名内部类对象,只是不得不创建,我们真正希望做的事是:将run方法体的代码传给thread类。

lambda表达式:

jdk 1.8 新特性。

格式: 0、一些参数  1、一个箭头 2、一段代码。

(参数列表)->{ 重写方法的代码};

参数列表: 抽象方法的参数列表,有就写,没有就空着。

->: 传递,把参数传递给方法体。

{}: 重写抽象方法的方法体。

public static void main(string[] args) {
        new thread(()->{
            system.out.println("创建新线程:"+thread.currentthread().getname());

        }).start();
    }

简化lambda表达式:

lambda表达式是可推导,可省略。

0、(参数列表):数据类型可省略。

1、(参数列表):只有一个参数,()也可省略。

2、{代码} :只有一行,无论是否有返回值,{} ,return,分号 都可省略(要省略{},return

      和分号必须一起省略。

lambda的使用前提:

0、使用lambda必须有接口,且要求接口只有一个抽象方法。

1、使用lambda必须具有上下文推断,方法的参数或局部变量类型必须为lambda对应的接口类型

有且只有一个抽象方法的接口  称为 【 函数式接口 】。