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

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

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

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();
}


如果仅传递UserIdClientIdDataMap为空,那么我将这样创建URL-

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


但是在上述情况下,由于映射为空,因此将抛出NPE。我该如何解决这个问题?

如果要传递地图数据,那么我将使用以下网址:

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


在这里,attribute是映射的键,而testing是该键的值。

最佳答案

只需检查您的地图是否为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/

10-10 17:25