21-Java1.8新特性
程序员文章站
2022-12-20 16:13:15
一,函数式编程思想1.1 概念在数学中,函数就是一套计算方案。它重点放在 “ 拿什么东西就能做什么事情 ”。对于面向对象的编程思想而言,我们必须明确是哪一个对象来做这件事情的,而函数式编程思想的重点是 “ 做什么,不是以什么形式来做 。”1.2 函数式编程思想和面向对象思想比较案例new Thread(new Runnable(){ @Override public void run() { for(int i = 1;i <= 100; i++){...
一,函数式编程思想
1.1 概念
在数学中,函数就是一套计算方案。它重点放在 “ 拿什么东西就能做什么事情 ”。
对于面向对象的编程思想而言,我们必须明确是哪一个对象来做这件事情的,
而函数式编程思想的重点是 “ 做什么,不是以什么形式来做 。”
1.2 函数式编程思想和面向对象思想比较案例
new Thread(new Runnable(){ @Override public void run() { for(int i = 1;i <= 100; i++){ System.out.println(Thread.currentThread().getName() +"---"+i); } } }).start(); new Thread(() -> { for(int i = 1;i <= 100; i++){ System.out.println(Thread.currentThread().getName() +"---"+i); } }).start();
如果要使用实现 Runnable 接口的方式开启线程,我们必须创建出 Runnable 的实现类对象,并重写 run() 方法明确线程中要执行的任务。我们的重点是开启线程,让线程执行指定的任务,而不是创建 Runnable 的实现类对象也不是去重写 run() 方法。实际上,只有 run() 方法中的方法体才有重点。
1.3 Lambda表达式的语法
组成:
- 参数列表
- 箭头
- 代码块
格式:
(参数列表)-> { 代码块 }
格式说明:
- ():表示接口中抽象方法的参数列表;方法没有参数的话就留空,有的话就跟着接口中的这个方法的参数列表来写。
- ->:传递的意思,把参数传递给方法体
- {}:重写接口抽象方法的方法体
Lambda表达式中可以省略的内容:
- 参数列表中的类型
- 如果参数只有一个,那么连 " () "也能省略,此时 " () " 省略情况下,类型一定不能写
- 如果 " {} " 中只有一行代码,
- 重写的方法没有返回值:可以省略 " {} " ,此时该语句的分号必须省略
- 重写的方法有返回值:可以省略 " {} ",此时 " reuturn " 和 分号 必须省略
Lambda 的使用前提:
- 使用 Lambda 表达式必须要有接口,接口中有且只能有一个抽象方法,默认的方法、静态的方法、私有方法也可以包含。
- 方法的参数必须是函数式接口,才能使用 Lambda 作为该接口的实例
函数式接口:有且仅有一个抽象方法的接口,可以通过 @FunctionalInterface 注解来校验该接口是否的函数式接口
1.4 常见的函数式接口
1.4.1 Supplier
该接口中有一个无参的抽象方法:T get()
它用来获取一个泛型参数指定的数据类型的对象
1.4.2 Predicate
该接口中有一个无参的抽象方法:boolean test(T t),两个默认方法:and() 、or()
它用来判断是否满足条件
本文地址:https://blog.csdn.net/zhu_fangyuan/article/details/107660755