读Java8函数式编程笔记04_类库
2023-03-31 10:38:40 时间
1. 默认方法
1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀
1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法
1.2. Collection接口
1.2.1. stream方法
1.3. Iterable接口
1.3.1. forEach方法
1.4. 虚方法
1.5. 类中重写的方法优先级高于接口中定义的默认方法
1.5.1. 能简化很多继承问题
1.5.2. 任何时候,一旦与类中定义的方法产生冲突,都要优先选择类中定义的方法
1.5.3. 如果类中重写的方法没有默认方法的优先级高,那么就会破坏已有的实现
1.5.4. 为了在接口上向后兼容
2. 接口的静态方法
2.1. Stream.of
2.2. Stream.range
2.3. Stream.iterate
3. 改变了人们认识类库的方式,接口中的方法也可以包含代码体
4. 函数接口的方法
4.1. 使用Predicate,调用test方法
4.2. 使用Function,调用apply方法
5. 基本类型
5.1. int
5.2. 内建在语言和运行环境中
5.3. 基本的程序构建模块
6. 装箱类型
6.1. Integer
6.2. 普通的Java类
6.3. 对基本类型的一种封装
7. 在最坏的情况下,同样大小的数组,Integer[]要比int[]多占用6倍内存
8. 装箱
8.1. 将基本类型转换为装箱类型
9. 拆箱
9.1. 将装箱类型转换为基本类型
10. Stream类特殊处理的基本类型
10.1. IntStream
10.2. DoubleStream
10.3. LongStream
10.4. summaryStatistics方法
10.4.1. min
10.4.2. max
10.4.3. average
10.4.4. sum
11. BinaryOperator
11.1. 一种特殊的BiFunction类型
11.2. 参数的类型和返回值的类型相同
12. 目标类型推导规则
12.1. 如果只有一个可能的目标类型,由相应函数接口里的参数类型推导得出
12.2. 如果有多个可能的目标类型,由最具体的类型推导得出
12.3. 如果有多个可能的目标类型且最具体的类型不明确,则需人为指定类型
13. @FunctionalInterface
13.1. 每个用作函数接口的接口都应该添加这个注释
13.2. Java中有一些接口,虽然只含一个方法,但并不是为了使用Lambda表达式来实现的
13.3. 关闭资源是更改状态的另一种形式
13.4. 该注释添加给一个枚举类型、类或另一个注释,或者接口包含不止一个抽象方法,javac就会报错
13.4.1. 重构代码时,使用它能很容易发现问题
14. 多重继承
14.1. 使用super关键字是指向父类
14.2. InterfaceName.super这样的语法指的是继承自父接口的方法
15. 三定律
15.1. 类胜于接口。如果在继承链中有方法体或抽象的方法声明,那么就可以忽略接口中定义的方法
15.1.1. 为了让代码向后兼容
15.2. 子类胜于父类。如果一个接口继承了另一个接口,且两个接口都定义了一个默认方法,那么子类中定义的方法胜出
15.3. 如果上面两条规则不适用,子类要么需要实现该方法,要么将该方法声明为抽象方法
16. 接口和抽象类的区别
16.1. 接口允许多重继承,却没有成员变量
16.2. 抽象类可以继承成员变量,却不能多重继承
17. Optional
17.1. 在一个值可能为空的建模情况下,使用Optional对象能替代使用null值
17.2. 为核心类库新设计的一个数据类型,用来替换null值
17.2.1. 使用null代表值不存在的最大问题在于NullPointerException
17.3. Optional对象鼓励程序员适时检查变量是否为空,以避免代码缺陷
17.4. 它将一个类的API中可能为空的值文档化,这比阅读实现代码要简单很多
17.5. 方法
17.5.1. get
17.5.2. orElse
17.5.2.1. 当Optional对象为空时,该方法提供了一个备选值
17.5.3. orElseGet
17.5.3.1. 接受一个Supplier对象,只有在Optional对象真正为空时才会调用
17.5.4. empty
17.5.5. ofNullable
17.5.5.1. 将一个空值转换成Optional对象
17.5.6. isPresent
17.5.6.1. 一个Optional对象里是否有值
相关文章
- 多起宕机事故发生,竟都归咎于最初的失败设计……
- 即插即用、无需训练:剑桥大学、腾讯AI Lab等提出免训练跨模态文本生成框架
- 被Linux之父骂醒?英伟达破天荒开源GPU内核驱动,网友:活久见
- 跳槽赔107万!被竞业协议“逼疯”的打工人
- 新常态成型,飞连联手Forrester聚焦数字化办公新体验
- 2022年全球服务器行业技术竞争格局分析
- Transformer 五年引用超四万,六位作者创立五家创业公司,仅一位作者还留在谷歌
- 2-2-视频传输,监控,直播方案-ESP32把采集的摄像头照片数据通过UDP发送给UDP客户端(C# UDP客户端)
- 2-2-视频传输,监控,直播方案-Air724UG(4G)把采集的摄像头照片数据通过UDP发送给UDP客户端(C# UDP客户端)
- Git 技术篇 - github镜像推荐,无需访问国外网站实现飞速访问github官网
- Git 技术篇 - git remote修改、移除仓库源的使用方法,git添加仓库源提示fatal: remote origin already exists.问题解决
- 给几句话就能生成分子,看见分子也能生成描述,神秘的Google X把多模态AI做成了黑科技
- Git 技术篇 - 同步代码到github失败,提示non-fast-forward、error: failed to push some refs to问题解决方法,git pull的用法
- Git 技术篇 - GitHub克隆私有仓库方法,新主机绑定并同步github私有库实例演示
- 1-ESP8266转485通讯模块-硬件使用说明
- IDEA注释模板,惊艳了!动作要快,姿势要帅!
- 203-ESP32_SDK开发-softAP+station共存模式
- 英伟达算法遭破解,RTX30系恢复100%挖矿算力:显卡降价结束了?
- 1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)-硬件使用说明
- 2-HC32F460(华大)+Air724UG(4G GPRS)远程升级篇(自建物联网平台)