当前位置 : 主页 > 编程语言 > java >

Java Lambda表达式

来源:互联网 收集:自由互联 发布时间:2022-09-02
Java Lambda表达式 1.Lambda是java8的新特性,lambda表达式也称为闭包,是在匿名内部类的基础上衍生出来的 2.Lambda表达式优点:避免了匿名内部类定义过多,减少了代码量 3.Lambda表达式的关键

Java Lambda表达式

1.Lambda是java8的新特性,lambda表达式也称为闭包,是在匿名内部类的基础上衍生出来的

2.Lambda表达式优点:避免了匿名内部类定义过多,减少了代码量

3.Lambda表达式的关键是函数式接口

函数式接口:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口,如:

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

4.Lambda表达式的推演(代码按这些类的顺序看,都注解了):普通内部类(1)-->静态内部内(2)-->局部内部类(3)-->匿名内部类(4)-->Lambda表达式()(5)(使用这些类时注意放的位置)

package cn.lexed.Demo3; public class LambdaTest { //静态内部类 static class People1 implements Note{ public void say() { System.out.println("I love you world"); } } public static void main(String[] args){ //接口实例化一个对象,向上转型 Note note=new People(); note.say(); note=new People1(); note.say(); //局部内部类 class People2 implements Note{ public void say() { System.out.println("I love you and world"); } } note=new People2(); note.say(); //匿名内部类,没有类的名称,必须借助接口或者父类 note=new Note(){ public void say(){ System.out.println("心中无物"); } }; note.say(); //lambda简化 note=()->{ System.out.println("心中无物"); }; note.say(); } } //普通内部类 class People implements Note{ String name="未知"; public void say(){ System.out.println("I love you"+name); } } interface Note{ void say(); }
Lambda的化简

1.无参数,无返回值

语法:

note=()->{ System.out.println("心中无物"); }; note.say();

2.当接口里方法只有一个参数,无返回值时:参数类型和括号可以省略

语法:

Animal dog=name->{ System.out.println("我的名字是"+name+",我是这个家的看守者"); }; dog.type("dog"); interface Animal{ void type(String name); }

3.两个参数,无返回值:参数类型可以省略

语法:

Animal dog=(name,age)->{ System.out.println("我的名字是"+name+"我"+age+"岁了,我是这个家的看守者"); }; dog.type("dog",12); interface Animal{ void type(String name,int age); }
总结:

1.Lambda表达式只能有一行代码的情况下才能简化成为一行,如果多行用代码块包裹

2.前提是接口为函数式接口

3.多个参数也可以去掉参数类型,括号不可以去掉

<!--大家可以尝试下写两个参数有返回值的Lambda表达式-->

上一篇:伪类选择器
下一篇:没有了
网友评论