Yeo*_*ang 2 java null option-type
这可能是一个愚蠢的问题。
当我Optional.isEmpty()在代码中使用如下所示时
Optional<List<String>> optional = Optional.of(new ArrayList<>());
optional.isEmpty(); // only checks if the value is NULL or not.
Run Code Online (Sandbox Code Playgroud)
isEmpty()方法只是检查值null是否存在。
public boolean isEmpty() {
return value == null;
}
Run Code Online (Sandbox Code Playgroud)
这个方法名称对我来说似乎不太清楚。
我想知道为什么这个方法被命名isEmpty(),而不是isNull()因为它在幕后执行空检查?
它\xe2\x80\x99s 是因为空检查是一个实现细节,而不是该方法逻辑上执行的操作。从逻辑上讲,该方法检查可选值是否为空或已占用。
\n从技术上讲,这可以通过多种方式实现,具体取决于Optional存储其值的方式。JDK 8\xe2\x80\x99s 实现恰好使用带有空检查的引用对象,但其他实现可能会以不同的方式执行此操作。将高级接口描述与其实现相混淆是错误的。封装的全部意义在于从用户那里抽象出实现细节。