从bean中检索内容而不必担心返回null?

时间:2012-03-30 17:02:21

标签: java

假设您有一些内容可以保证有一些价值。你的工作是在给出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

1 个答案:

答案 0 :(得分:3)

编译器不知道你的不变量,所以你在最后放一个return语句。但是,您可以执行的操作是添加assert false语句,以明确说明这不是为了运行:

assert false;
return null;

额外的好处是,如果您的假设错误并且使用-ea运行,则会在您的脸上抛出异常。

另请记住在您的规范中说明该函数不会返回null!这样调用者就不必担心它,并且可以避免额外的检查。