Lambda表达式
1.推导lambda 先从外部类->静态内部类->局部内部类->匿名内部类->lambda表达式
/* 推导lambda表达式 */ public class TestLambda { //3.内部类 static class Like2 implements Ilike{ @Override public void lambda() { System.out.println("i like lambda2"); } } public static void main(String[] args) { 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"); } }
2.简化lambda表达式
//简化lambda表达式 public class TestLambda2 { public static void main(String[] args) { Ilove love=null; //开始的lambda love =(int a)->{ System.out.println("I Love You-->"+ a); }; love.love(1); //简化1:去掉参数类型 love =(a)->{ System.out.println("I Love You-->"+ a); }; love.love(2); //简化2:去掉括号 love =a->{ System.out.println("I Love You-->"+ a); }; love.love(3); //简化3:去掉花括号 love =(a)-> System.out.println("I Love You-->"+ a);; love.love(4); //总结: //lambda表达式只能有一行代码的表达式才能才能去花括号,如果有多行,那么就用代码块包裹。 //前提接口为函数式接口:接口中只有一个方法为函数式接口。 //多个参数也可以去掉参数类型,但是必须加括号 } } interface Ilove{ void love(int a); }
浙公网安备 33010602011771号