代表性行:弹簧可选 笔记

代表性行:弹簧可选

可选类型(Optional types)的引入是为了缓解空引用异常,这通常被称为“十亿美元的错误”。它们通过包装一个值来工作,确保 Optional 本身总是存在的。这使得开发者能够安全地检查实际值的存在。设计良好的 Optional 实现提供了有用的值操作方法。然而,这个概念可能会被滥用,例如创建用于 TRUE 和 FALSE 的静态 Optional 常量。这种做法值得商榷,尤其是在已经提供此类布尔常量的语言中。创建如 Optional.of(Boolean.TRUE) 这样的常量,本质上等同于 TRUE = TRUE。此类实现表明存在潜在的设计缺陷。作者在 Spring Web API 应用中遇到了这种情况,其中实现了自定义过滤器,而不是利用框架的功能。静态 Optional TRUE 和 FALSE 声明的例子凸显了一个更广泛的问题:重复发明现有的解决方案。这可能暗示着对原始问题以及旨在解决该问题的工具的误解。这种不必要的复杂性可能导致令人困惑且效率低下的代码。