Java基础14-从外部类到lambda

记载从外部类到静态内部类、局部内部类、匿名内部类最后到lambda的简化过程。
函数式接口:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。(非抽象方法需要default关键字)


// 1. 定义函数式接口
interface SayLambda{
    void sayLambda();
}

// 2.外部类
class Say1 implements SayLambda{

    @Override
    public void sayLambda() {
        System.out.println("外部类!");
    }
}

public class TestLambda {
    static class Say2 implements SayLambda{
        @Override
        public void sayLambda() {
            System.out.println("静态内部类!");
        }
    }

    public static void main(String[] args) {
        Say1 say1 = new Say1();
        say1.sayLambda();

        Say2 say2 = new Say2();
        say2.sayLambda();

        class Say3 implements SayLambda{
            @Override
            public void sayLambda() {
                System.out.println("局部内部类!");
            }
        }
        Say3 say3 = new Say3();
        say3.sayLambda();

        SayLambda say4 = new SayLambda() {
            @Override
            public void sayLambda() {
                System.out.println("匿名内部类!");
            }
        };
        say4.sayLambda();

        SayLambda say5 = ()->{
            System.out.println("lambda!");
        };
        say5.sayLambda();
    }

}

对lambda的简化

interface SaySomethingElse{
    void saySomething(int a);
}
public class TestLambda {
    static class Say2 implements SayLambda{
        @Override
        public void sayLambda() {
            System.out.println("静态内部类!");
        }
    }

    public static void main(String[] args) {
        //对lambda的简化
        // 简化前
        SaySomethingElse saySomethingElse = (int a)->{
            System.out.println("Something else "+ a);
        };
        saySomethingElse.saySomething(10);
//        去掉参数类型,去掉括号,去掉花括号
        saySomethingElse = a ->             System.out.println("Something else "+ a);
        saySomethingElse.saySomething(10);
    }

}
posted @ 2021-01-21 14:04  tanjr  阅读(76)  评论(0编辑  收藏  举报