Java-Lamda表达式
- λ希腊字母表中排序第十一位的字母,英语名称为Lambda
- 避免匿名内部类定义过多
- 其实质数据函数式编程的概念
new Thread (()->System.out.peintln("多线程学习。。。。")).start();
- 为什么使用lambda表达式
- 避免匿名内部类定义过多
- 可以让开大看起来很简洁
- 去掉一堆没有意义的代码,只保留核心逻辑
- 理解Function Interface(函数式接口)是学习Java8 lambda表达式的关键所在。
- 函数式接口的定义:
- 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
1 public interface Runnable{ 2 public abstract void run(); 3 }
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
示例代码1
1 package com.wang.lambda; 2 3 /* 4 推导lambda表达式 5 */ 6 7 public class TestLambda1 { 8 // 3.静态内部类 9 static class Like2 implements ILike { 10 @Override 11 public void lambda() { 12 System.out.println("i like lambda2"); 13 } 14 } 15 16 17 public static void main(String[] args) { 18 ILike like = new Like(); 19 like.lambda(); 20 21 like = new Like2(); 22 like.lambda(); 23 24 //4.局部内部类 25 class Like3 implements ILike { 26 @Override 27 public void lambda() { 28 System.out.println("i like lambda3"); 29 } 30 } 31 like = new Like3(); 32 like.lambda(); 33 34 //5.匿名内部类 35 like = new ILike() { 36 @Override 37 public void lambda() { 38 System.out.println("i like lambda4"); 39 } 40 }; 41 like.lambda(); 42 43 //6.用lambda简化 44 like = () -> { 45 System.out.println("i like lambda5"); 46 }; 47 like.lambda(); 48 } 49 50 51 52 53 } 54 55 //1.定义一个函数式接口 56 interface ILike { 57 void lambda(); 58 } 59 60 //2.实现类 61 class Like implements ILike { 62 @Override 63 public void lambda() { 64 System.out.println("i like lambda"); 65 } 66 }
示例代码2
1 package com.wang.lambda; 2 3 public class TestLambda2 { 4 5 public static void main(String[] args) { 6 Ilove love = null; 7 8 //1、lambda表示简化 9 love = (int a,int b) -> { 10 System.out.println(b+"i love you1" + a); 11 }; 12 13 //简化1、参数类型 14 love = (a,b)->{ 15 System.out.println(b+"i love-->"+a); 16 }; 17 18 //简化2、简化括号(代码块) 19 love = (a,b)->{ 20 System.out.println(b+"i love you-->"+a); 21 }; 22 23 //简化3、去掉花括号 24 love = (a,b)-> System.out.println(b+"i love you-->"+a); 25 26 //总结:lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行,那么就用代码块包裹; 27 //前提是接口为函数式接口。 28 //多个单数也可以去掉参数类型,要去掉就都去掉,必须加上括号。 29 love.love(520,250); 30 } 31 } 32 33 //1、定义接口 34 interface Ilove { 35 void love(int a,int b); 36 }

浙公网安备 33010602011771号