在迭代之前调用 isEmpty() 是多余的吗?

use*_*253 1 java

鉴于Collection<Object> foo,我通常会在迭代之前进行此检查:

    if (foo != null && !foo.isEmpty()) {
        for (Object f : foo) {
            // ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

我只是想知道,这被认为是最佳实践吗?isEmpty()检查不应该是多余的,因为for()它只会忽略一个空集合而不会抛出错误?

null检查如何- 这是必要的还是有办法for()简单地忽略null集合?(没有尝试捕捉 for 循环)

T.J*_*der 5

isEmpty() 检查不应该是多余的,因为 for() 只会忽略空集合而不会抛出错误?

这是多余的,for在空集合上使用增强是完全无害的。请注意,这样做确实会创建一个迭代器对象,因此该检查可能会提供一些非常小的内存流失保护,但通常如果这样做值得,您将有更大的问题需要解决。

空检查怎么样——这是必要的还是有办法让 for() 简单地忽略空集合?(没有尝试捕捉 for 循环)

您需要null检查,除非您要捕获 NPE(您说您不想这样做)或者您要允许该 NPE 传播给调用者(例如,因为在逻辑上foo永远不应该null在那个点,或者相似的)。


归档时间:

查看次数:

971 次

最近记录:

9 年 前