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

Lambda表达式

时间:2020-02-28 20:30:15      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:size   冗余   匿名内部类   new   新特性   表达   代码   表达式   img   

Lambda表达式

从JDK8开始(JDK1.8),加入了Lambda表达式的重量级新特性,为我们打开了新世界的大门。

          技术图片

匿名内部类

一方面匿名内部类可以省去实现类的定义;然而另一方面,匿名内部类的语法,确实太复杂了。

public class Demo {
    public static void main(String[] args) {
        new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("创建了新的线程");
            }
        }).start();
    }
}

我们可以用Lambda表达式去简化匿名类中一些冗余的代码,使得同样的表达在Lambda语法中更加简单。

Lambda标准格式

由三部分组成:a.一些参数 b.一个箭头 c.一段代码

格式:

(参数列表)  ~> {一些重写方法的代码}

( ):接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数用逗号隔离。

~>:传递的意思,把参数传递给方法体{ }。

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

上述代代码可以简化为如下:

new Thread(()->{
                System.out.println("创建了新的线程");
              }
        ).start();

接下来还有一个例子如下,给定一个Cook接口,使用Lambda表达式来在方法中传递创建的接口实例:

public interface Cook {
    void makeFood();
}
public class Demo {
    public static void main(String[] args) {
        invokeCook(()->{
            System.out.println("饭做好了");
        });
    }
    public static void invokeCook(Cook cook){
        cook.makeFood();
    }
}

Lambda表达式:是可推导,可以省略的

凡是根据上下文推导出来的内容,都可以省略书写

可以省略的书写内容如下:

1.(参数列表):括号中参数列表的数据类型,可以省略不写。

2.(参数列表):括号中的参数只有一个的,那么类型和()都可以省略。

3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略)({},returm,分号)

注意:要省略{},return,分号必须一起省略。

实例如下:

public interface Cook {
    String makeFood(String str,String str1);
}
public class Demo {
    public static void main(String[] args) {
        invokeCook((str,str1)->
            str + str1
        );
    }
    public static void invokeCook(Cook cook){
        cook.makeFood("生日","蛋糕");
    }
}

Lambda表达式就说到这了~

 

Lambda表达式

标签:size   冗余   匿名内部类   new   新特性   表达   代码   表达式   img   

原文地址:https://www.cnblogs.com/hutree/p/12379806.html

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