Lamda表达式

落花浮王杯 提交于 2019-12-06 10:58:18

简化代码,避免匿名内部类定义过多

学习Lamda表达式的关键在于理解Functional Interface(函数式接口)

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

                                   public interface Runnable {

                                               public abstract void run();

                                   }

                                   对于函数式接口,我们可以通过lamda表达式来创建该接口的对象

package com.wang.lamda;​public class LamdaDemo01 {    //3、静态内部类    //把实现类写成静态内部类    static class Like2 implements ILike{​        @Override        public void Lambda() {            System.out.println("i like lambda2");        }    }    public static void main(String[] args) {        //接口new实现类        ILike like=new Like();        like.Lambda();​        like=new Like2();        like.Lambda();​     //4、局部内部类        class Like3 implements ILike{​            @Override            public void Lambda() {                System.out.println("i like lambda3");            }        }        like=new Like3();        like.Lambda();​     //5、匿名内部类,没有类的名称,必须借助接口或父类         like=new ILike() {             @Override             public void Lambda() {                 System.out.println("i like lambda4");             }         };         like.Lambda();     //6、用lambda简化        like=()-> {System.out.println("i like lambda5");};        like.Lambda();    }}//1、定义一个函数式接口interface ILike{    //只要在接口里面,自动就是抽象的,不需要写出来    void Lambda();}//2、实现类class Like implements ILike{​    @Override    public void Lambda() {        System.out.println("i like lambda");    }}​
package com.wang.lamda;​public class LambdaDemo {    //4、外部类放到内部  静态内部类    static class Love2 implements ILove{        @Override        public void love(int a) {            System.out.println("i love you "+a);        }    }    //main方法    public static void main(String[] args) {        ILove love=new Love();        love.love(1);​        love=new Love2();        love.love(2);​    //5、局部内部类    class Love3 implements ILove{     @Override            public void love(int a) {                System.out.println("i love you "+a);        }    }​        love=new Love3();        love.love(3);​     //6、匿名内部类        love=new ILove() {            @Override            public void love(int a) {                System.out.println("i love you "+a);            }        };        love.love(4);​     //7、Lambda表达式简化 方法中有参数        love=(int a)->{ System.out.println("i love you "+a); };        love.love(5);        //7.1 简化Lambda         love=a -> {            System.out.println("i love you "+a);        };        love.love(6);        //7.2        love=a -> System.out.println("i love you "+a);        love.love(7);            }}//1、定义接口interface ILove{    //2、写方法,接口中是抽象方法,不用写abstract    void love(int a);}//3、实现类class Love implements ILove{​    @Override    public void love(int a) {        System.out.println("i love you "+a);    }}

  总结

Lambda表达式:

只有一行代码的情况下才能去掉花括号,只剩下一行
多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
前提是接口是函数式接口

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!