Lamda表达式


Lamda表达式

1.理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在。

2.函数式接口的定义:
   1.任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口,
    2.对于函数式接口,我们可以通过lambda表达式来创建接口的对象 

  为什么要用lambda表达式

1.避免匿名内部类定义过多
2.可以让你的代码看起来简洁
3.去掉了一堆没有意义的代码,只留下核心的逻辑。
//接口且只有一个方法
public
interface Ilove { public void love(int a); }
public class Love implements Ilove {

    @Override
    public void love(int a) {

        System.out.println("I Love You:"+a+"号");
    }
}
import com.lambda.interfaces.Ilove;
import com.lambda.interfacesImp.Love;

public class TestLambda {

    //静态内部类
    static class Love2 implements Ilove{
        @Override
        public void love(int a) {
            System.out.println("I Love You:"+a+"号");
        }
    }

    public static void main(String[] args) {

        //局部内部类
        class Love3 implements Ilove{
            @Override
            public void love(int a) {
                System.out.println("I Love You:"+a+"号");
            }
        }

        //匿名内部类
        Ilove ilove=new Ilove(){
            @Override
            public void love(int a) {
                System.out.println("I Love You:"+a+"号");
            }
        };
        ilove.love(5);
        //lambda表达式
        Ilove ilove2=(int a)->{
            System.out.println("I Love You:"+a+"号");
        };
        ilove2.love(6);
        //简化lambda表达式  最终形态
        Ilove ilove3=a-> System.out.println("I Love You:"+a+"号");
        ilove3.love(520);

        //正常
        Ilove loves=new Love();
        loves.love(2);

        //静态内部类
        loves =new Love2();
        loves.love(3);

        //局部内部类
        loves=new Love3();
        loves.love(4);
    }

}

总结

1.lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,那么就用代码块包裹。
2.前提是接口为函数式接口
3.多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。

相关