在一些试图与HashMap
中的字符串进行比较的代码中,我尽量避免出现NullPointerException
。
HashMap
定义得很好,但是在HashMap
中可能有也可能没有相应的条目,所以我相信这可能是我的NPE和相关的Android Studio警告的来源。
我的代码是:
if (region_ids !=null && source_region != null && selected_id != null) {
if (source_region.equals("it") && region_ids.containsKey("it") && !selected_id.equals(region_ids.get("it").toString())) {
// Do stuff for mismatched region
}
}
其中region_ids
是HashMap
。
我是否做了足够的工作来防止NullPointerException
%s?
如果是这样,为什么Android Studio仍然在IDE中给我警告?
(请注意,故意包含Android-Studio
标记是因为这个问题的最后部分很具体。)
更新
根据Code-Apprentice的评论和Nosyara的回答,我现在有以下两个if
语句的变体,但仍然得到关于toString()
方法的NPE警告:
if ( region_ids_string != null && spin_region_id != null && source_region != null && selected_id != null && assoc_ids != null) {
if ( region_ids_string.size() > spin_region_id.getSelectedItemPosition()) {
if (source_region.equals("com_mx") && assoc_ids.get("com_mx") != null && assoc_ids.containsKey("com_mx") && !selected_id.equals(assoc_ids.get("com_mx").toString())) {
return true;
} else if ("com_au".equals(source_region) && assoc_ids.containsKey("com_au") && assoc_ids.get("com_au") != null && !assoc_ids.get("com_au").toString().equals(selected_id)) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
因此,我相信我现在正在检查null
,"",以及Key
是否存在于HashMap
中,但仍然相信语句有可能生成NPE...
https://stackoverflow.com/questions/56174726
复制相似问题