Item 55: 谨慎返回 Optional 对象
💡
原文约500字/词,阅读约需2分钟。
📝
内容提要
Java 8 引入了 Optional 类,避免了 null 并简化了缺失值的处理。它允许客户端决定在值缺失时该怎么做。实用的方法包括 of()、ofNullable()、orElse()、orElseThrow()、map()、flatMap() 和 filter()。避免在集合中使用 Optional,并考虑性能影响。提供了代码使用示例。
🎯
关键要点
- Java 8 引入了 Optional 类,避免了 null 并简化了缺失值的处理。
- Optional 是一个不可变的容器,可以包含一个值或为空。
- 使用 Optional 可以避免 NullPointerException 和其他与 null 相关的问题。
- Optional 提供了多种方法,如 of()、ofNullable()、orElse()、orElseThrow()、map()、flatMap() 和 filter()。
- 避免在集合中使用 Optional,建议返回空集合。
- 使用 Optional 会有对象分配的性能开销,建议对基本类型使用 OptionalInt、OptionalLong 和 OptionalDouble。
- 避免将 Optional 用作 Map 的键或值,或作为实例字段,除非在可选 getter 中有意义。
- 提供了多个代码示例,展示了如何使用 Optional 处理缺失值。
❓
延伸问答
什么是Java 8中的Optional类?
Optional类是一个不可变的容器,可以包含一个值或为空,旨在避免使用null并简化缺失值的处理。
使用Optional类有什么好处?
使用Optional可以避免NullPointerException,简化代码,并允许客户端决定缺失值时的处理方式。
Optional类提供了哪些常用方法?
Optional类提供的方法包括of()、ofNullable()、orElse()、orElseThrow()、map()、flatMap()和filter()。
在集合中使用Optional有什么问题?
避免在集合中使用Optional,建议返回空集合,以减少性能开销和复杂性。
使用Optional会有什么性能影响?
使用Optional会有对象分配的性能开销,建议对基本类型使用OptionalInt、OptionalLong和OptionalDouble。
如何在代码中使用Optional处理缺失值?
可以使用Optional的orElse()和orElseThrow()方法来处理缺失值,提供默认值或抛出异常。
➡️