国王陛下万万岁

导航

 

前情提示:

lambda表达式是JDK1.8的新特性

1. 进化的初级阶段之静态内部类

public class LambdaDemo {
    //静态内部类
    static class ListenMusic implements Runnable {
        @Override
        public void run() {
            for (int i = 5; i > 0; i--) {
                System.out.println("---静态内部类**一边听歌---" + i);
            }
        }
    }

    public static void main(String[] args) {
        new Thread(new ListenMusic()).start();
    }
}

结果:

---静态内部类**一边听歌---5
---静态内部类**一边听歌---4
---静态内部类**一边听歌---3
---静态内部类**一边听歌---2
---静态内部类**一边听歌---1

 

2.进化的第二阶段之局部内部类

public class LambdaDemo {
    //局部内部类,方法里面的类就是局部内部类
    //这里,我们把局部内不能放在了类方法里面

    public static void main(String[] args) {
        class ListenMusic implements Runnable {
            @Override
            public void run() {
                for (int i = 5; i > 0; i--) {
                    System.out.println("---静态内部类**一边听歌---" + i);
                }
            }
        }
        new Thread(new ListenMusic()).start();
    }
}

结果:

---静态内部类**一边听歌---5
---静态内部类**一边听歌---4
---静态内部类**一边听歌---3
---静态内部类**一边听歌---2
---静态内部类**一边听歌---1

 

3.进化的第三阶段之匿名内部类

public class LambdaDemo {
    //匿名内部类必须要跟在new 类名()或者new 接口名()后面
    //这里,我们把匿名内部类放在了类方法里面

    public static void main(String[] args) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 5; i > 0; i--) {
                    System.out.println("---匿名内部类**一边听歌---" + i);
                }
            }
        }).start();
    }
}

结果:

---匿名内部类**一边听歌---5
---匿名内部类**一边听歌---4
---匿名内部类**一边听歌---3
---匿名内部类**一边听歌---2
---匿名内部类**一边听歌---1

 

4.进化的第四阶段之lambda表达式诞生

public class LambdaDemo {
    //lambda表达式
    //这里,我们把lambda放在了main()方法里面

    public static void main(String[] args) {

        new Thread(() -> {
            for (int i = 5; i > 0; i--) {
                System.out.println("---lambda**一边听歌---" + i);
            }
        }
        ).start();
    }
}

结果:

---lambda**一边听歌---5
---lambda**一边听歌---4
---lambda**一边听歌---3
---lambda**一边听歌---2
---lambda**一边听歌---1

 

再来看一个lambda表达式的例子

public class LambdaDemo {

    public static void main(String[] args) {

        Music m = () -> {
            System.out.println("---我爱lamba音乐---");
        };
        m.listen();
    }
}

interface Music {
    void listen();
}

结果:

---我爱lamba音乐---

 

抽象类不能用在lambda表达式,因为抽象类不能实例化。

lambda表达式的()里面可以带参数

lambda表达式与函数时接口有关

 

posted on 2020-03-08 18:17  国王陛下万万岁  阅读(211)  评论(0编辑  收藏  举报