gpt4 book ai didi

java - 检查 Set 是否不包含 null 的好方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:31 26 4
gpt4 key购买 nike

我有一个方法,它被赋予一组 Set 对象。它委托(delegate)的方法要求 Set 不包含任何空元素。我想check the precondition Set 在委托(delegate)之前的方法中早期不包含空元素。这样做的明显代码是这样的:

public void scan(Set<PlugIn> plugIns) {
if (plugIns == null) {
throw new NullPointerException("plugIns");
} else if (plugIns.contains(null)) {
throw new NullPointerException("plugIns null element");
}
// Body
}

但这是不正确的,因为 Set.contains()如果Set 实现本身 不允许空元素,则可能会抛出NullPointerException。在这种情况下捕获然后忽略 NullPointerException 会起作用 but would be inelegant .有没有一种巧妙的方法来检查这个先决条件?


Set 界面是否存在设计缺陷?如果 Set 实现可能永远不会包含 null,为什么不要求 Set.contains(null) 始终返回 false?或者有一个 isNullElementPermitted() 谓词?

最佳答案

最简单的方法是枚举 Set 并检查空值。

public void scan(Set<PlugIn> plugIns) {
if (plugIns == null) throw new NullPointerException("plugIns");
for (PlugIn plugIn : plugIns) {
if (plugIn == null) throw new NullPointerException("plugIns null element");
}
}

关于java - 检查 Set 是否不包含 null 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8787480/

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