总结几乎说明了一切。这是相关的代码片段ImmutableList.createFromIterable()
:
if (element == null) {
throw new NullPointerException("at index " + index);
}
我已经多次遇到这种情况,不明白为什么通用库函数应该施加这种限制。
编辑 1:通过“通用”,我会对 95% 的情况感到满意。但我认为我还没有写过 100 个调用ImmutableList.of()
,并且不止一次被这个问题所困扰。不过,也许我是个异类。:)
编辑 2:我想我最大的抱怨是,这在与标准java.util
集合交互时会产生“打嗝”。正如您在演讲中指出的那样null
,集合中 s 的问题可能会在远离插入这些空值的位置出现。但是,如果我有一长串代码将空值放在一个标准集合中并在另一端正确处理它们,那么我无法在此过程中的任何时候替换谷歌集合类,因为它会立即扔一个NullPointerException
。