java复习

2020-07-16Lambda

2020-07-17  本文已影响0人  智障猿

Lambda

//接口
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");
    }
}
  1. 所需类型不同
    ①匿名内部类:可以是接口,也可以是抽象类,还可以是具体类。
    ②Lambda表达式:必须是接口
  2. 使用限制不同
    ①如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类
    ②如果接口中多于一个抽象方法,智能使用匿名内部类
  3. 实现原理不同
    ①匿名内部类:编译后,产生一个单独的.class字节码文件
    ②Lambda表达式:编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行时动态生成。
上一篇 下一篇

猜你喜欢

热点阅读