我正在根据传递给下面方法的主机名生成 URL。
UserId
和 ClientId
将始终被传递,但 DataMap
有时会为空。这里的 DataMap 是 String
和 String
。
如果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();
}
如果仅传递 UserId
和 ClientId
并且 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/