lambda表达式
函数式编程
- 强调程序执行的结果 而不重视如何去实现的过程
- 一个函数可以作为 另外一个函数的参数 或者返回值
- 面向对象思想: 要做一件事情 先找到能解决这个事情的一个对象 调用对象的方法来完成事情
演化过程
-
启动一个线程去执行任务,有两种方式.一种是继承Thread类 另一种实现Runnable接口.常用后一种
//我们的目的只是为了执行一下run方法 而面向对象却很复杂 //1.创建Runnable接口的实现类 public class RunnableImpl implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()+"线程创建完成"); } } //2.在测试类中 创建Thread类对象 将Runnable接口的实现类传递到构造方法中 调用start() public class Test{ public static void main(String[] args) { RunnableImpl run =new RunnableImpl(); Thread t=new Thread(run); t.start(); } }
-
当然可以使用匿名内部类简化书写
//匿名内部类不用去写Runnable的实现类 public class Test { public static void main(String[] args) { Runnable task=new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"线程创建完成"); } }; new Thread(task).start(); } } //或者这样写 new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"线程创建完成"); } }).start();
-
lambda表达式
//非常简单 new Thread(()->{ System.out.println(Thread.currentThread().getName()+"线程创建完成"); }).start();
()->{ System.out.println(Thread.currentThread().getName()+"线程创建完成"); //前面一对括号即run的参数为空 // -> 箭头表示将参数传递给后面的代码 //后面的极为逻辑代码
lambda
-
仅适用于函数式接口,即接口中只有一个抽象方法
-
可以推导 可以省略
-
小括号内参数类型可以省略
-
大括号只有一条语句 无论是否有返回值 可以省略大括号 return 和分号
()->System.out.println(Thread.currentThread().getName()+"线程创建完成")
-