假设您有一些内容可以保证有一些价值。你的工作是在给出like
的东西时找到它。
这有效:
public KVPair getKvpForKey(String keyValue) {
KVPair kvpInThisContent = null;
for (KVPair kvp : kvContent) {
if (kvp.getKey().getAsFound().equals(keyValue)) {
kvpInThisContent = kvp;
break;
}
}
return kvpInThisContent;
}
这也有效:
public KVPair getKvpForKey(String keyValue) {
for (KVPair kvp : kvContent) {
if (kvp.getKey().getAsFound().equals(keyValue))
return kvp;
}
return null;
}
但......两者都假设有可能......在某些情况下null
可能会被退回。虽然很好,但这似乎很草率,假设我们知道这是不可能的(内容就在那里!)。
有没有办法让它更干净而不必担心null
?
答案 0 :(得分:3)
编译器不知道你的不变量,所以你有在最后放一个return
语句。但是,您可以执行的操作是添加assert false
语句,以明确说明这不是为了运行:
assert false;
return null;
额外的好处是,如果您的假设错误并且使用-ea
运行,则会在您的脸上抛出异常。
另请记住在您的规范中说明该函数不会返回null
!这样调用者就不必担心它,并且可以避免额外的检查。