Java 添加的java.util.Optional
非常的受欢迎,并为总是不能返回非null值的方法提供了更流畅的代码。很不幸的是,Optional
已被滥用,一种滥用,甚至已被过度使用。当与直接使用相比null
没有明显优势时,我偶尔会遇到使用Optional
的代码。
当 Optional 与直接检查 null 相比没有任何优势,调用代码对它刚刚调用的方法的返回值使用Optional.ofNullable(T)
时,可能会提示一个危险信号。如同所有的“危险信号”,这并不意味着将方法将返回值传递个Optional.ofNullable(T)
(事实上,传递给期望 Optional 的 API 是必要的),但它的这种做法通常是用于不提供实际值,而不是直接使用返回值并检查它的是否为 null。
在 Optional 可用之前,用于检查 null 方法返回的代码以及对 null 响应采取一种方式和对非 null 响应采取另一种方式的代码如下所示)。
/**
* Demonstrates approach to conditional based on {@code null} or
* not {@code null} that is traditional pre-{@link Optional} approach.
*/
public void demonstrateWithoutOptional()
{
final Object returnObject = methodPotentiallyReturningNull();
if (returnObject == null)
{
out.println("The retur