java - 如何迭代map避免NPE?

标签 java dictionary nullpointerexception

我正在根据传递给下面方法的主机名生成 URL。

UserIdClientId 将始终被传递,但 DataMap 有时会为空。这里的 DataMap 是 StringString

如果keys.getDataMap()为空,我的下面的代码将抛出NullPointerException

private String generateURL(final String hostIPAdress) {
    StringBuffer url = new StringBuffer();
    url.append("http://" + hostIPAdress + ":8080/user?userid=" + keys.getUserId() + "&client_id="
        + keys.getClientId());

    // this line throw NPE
    Set<Entry<String, String>> params = keys.getDataMap().entrySet();

    for (Entry<String, String> e : params) {
        url.append("&" + e.getKey());
        url.append("=" + e.getValue());
    }

    return url.toString();
}

如果仅传递 UserIdClientId 并且 DataMap 为空,那么我将创建这样的 URL -

hostname:8080/user?userid=1234567&client_id=20

但是在上面的情况下,由于 map 是空的,它会抛出 NPE。如何解决这个问题?

如果正在传递 map 数据,那么我将像这样制作 url -

hostname:8080/user?userid=1234567&client_id=20&attribute=testing

这里attribute是 map 的键,testing是该键的值。

最佳答案

只需检查您的 map 是否为null:

final Map dataMap = keys.getDataMap();
if (dataMap != null)
{
    Set<Entry<String, String>> params = dataMap.entrySet();
    // ...
}

关于java - 如何迭代map避免NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21172419/

相关文章:

java - Infinispan 软索引文件存储问题

Java从Android JavascriptInterface中的另一个类获取变量

javascript - 字典中的日期对象更改 Javascript/Node 中的时区

java - 在 equals 检查中避免 NullPointerException 的干净方法

java - 线程问题 : NullPointerException

java - 在java中写入csv文件

Java Applet - ArrayIndexOutOfBoundsException(第 2 部分)

python - 在 Python 字典列表上使用 counter

javascript - 将名称添加到 Google map 标记

java - 是抛出异常还是返回 null 更 Java-thonic?