2020-07-16Lambda

作者: 智障猿 | 来源:发表于2020-07-17 07:47 被阅读0次

Lambda

  • Lambda格式
    ①格式:(形式参数)->{代码块}
    ②形式参数:如果有多个形式参数,参数之间用逗号隔开;如果没有参数,留空即可
    ③->:由英文中画线和大于符号组成
    ④代码块:是我们具体要做的事情,也就是以前我们写的方法体的内容
  • 注意事项
    ①使用Lambda必须有接口,并且要求接口中有且仅有一个抽象方法。
    ②必须有上下文环境,才能推导出Lambda对应的接口(根据局部变量的赋值得知Lambda对应的接口:Runnabler r = ()->Syetem.out.println("Lambda表达式"))(根据调用方法的参数得知Lambda对应的接口:new Thread(()->Syetem.out.println("Lambda表达式")).start())
  • 省略模式
    ①参数类型可以省略,但是有多个参数的情况下,不能只省略一个。
    ②如果参数有且只有一个,那么小括号可以省略。
    ③如果代码块的语句只有一条,可以省略大括号和分号,甚至是return
  • 使用场景
//接口
public interface lambdaTest {
    void test(String str);
}
public class Demo {
    public static void main(String[] args) {
        //方式一匿名内部类
        test(new lambdaTest() {
            @Override
            public void test(String str) {
                System.out.println(str);
            }
        });
        //方式二lambda
        test((String s)->{
            System.out.println(s);
        });

    }
    public static void test(lambdaTest lt){
        lt.test("这是lambda测试");
    }
}
public interface lambdaTest {
    void test(String str);
}

public class Demo {
    public static void main(String[] args) {
      lambdaTest lt = (String s)-> System.out.println(s);
      lt.test("hello");
    }
}
  • Lambda表达式与匿名内部类的区别
  1. 所需类型不同
    ①匿名内部类:可以是接口,也可以是抽象类,还可以是具体类。
    ②Lambda表达式:必须是接口
  2. 使用限制不同
    ①如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类
    ②如果接口中多于一个抽象方法,智能使用匿名内部类
  3. 实现原理不同
    ①匿名内部类:编译后,产生一个单独的.class字节码文件
    ②Lambda表达式:编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行时动态生成。

相关文章

  • 2020-07-16Lambda

    Lambda Lambda格式①格式:(形式参数)->{代码块}②形式参数:如果有多个形式参数,参数之间用逗号隔开...

网友评论

    本文标题:2020-07-16Lambda

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