gpt4 book ai didi

java - 为什么 ImmutableList.of() 和 friend 禁止空元素?

转载 作者:IT老高 更新时间:2023-10-28 20:45:37 25 4
gpt4 key购买 nike

总结几乎说明了一切。以下是 ImmutableList.createFromIterable() 中的相关代码片段:

  if (element == null) {
throw new NullPointerException("at index " + index);
}

我已经多次遇到这种情况,不明白为什么通用库函数会施加这种限制。

编辑 1:通过“通用”,我会对 95% 的情况感到满意。但我不认为我已经编写了 100 次对 ImmutableList.of() 的调用,并且不止一次被这个问题所困扰。不过,也许我是个异类。 :)

编辑 2:我想我最大的提示是,当与标准 java.util 集合交互时,这会产生“打嗝”。正如您在演讲中指出的那样,集合中 null 的问题可能会在远离插入这些空值的位置出现。但是,如果我有一长串代码将空值放在一个标准集合中并在另一端正确处理它们,那么我无法在此过程中的任何时候替换谷歌集合类,因为它会立即抛出 NullPointerException

最佳答案

我在这段视频的 25 分钟时解释了这一点: https://youtu.be/ZeO_J2OcHYM?t=1495

很抱歉这个懒惰的答案,但这毕竟只是一个“为什么”的问题(可能不适合 StackOverflow?)。

编辑:还有一点我不确定我是否在视频中说清楚了:总数(全世界所有 Java 代码)、必须为这些代码编写的额外代码量使用旧备用 Collections.unmodifiableList(Arrays.asList(...)) 等对 null 友好的情况下,额外的 总数(遍及全局所有 Java 代码)不堪重负>checkArgument(!foos.contains(null)) 调用每个人都需要添加,如果我们的集合没有为您解决这个问题。到目前为止,大多数情况下,集合的使用不希望出现任何空值,如果有的话,确实应该很快失败。

关于java - 为什么 ImmutableList.of() 和 friend 禁止空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com