【发布时间】:2019-06-09 20:23:53
【问题描述】:
我在 Android Studio 中有以下代码,但我收到Method invocation 'toString()' may produce 'NullPointerException' 的警告。
String source_regions_user_id = "";
if (user_ids != null && "".equals(source_region) && user_ids.containsKey(source_region) && user_ids.get(source_region) != null && user_ids.get(source_region) != "") {
source_regions_user_id = user_ids.get(source_region).toString();
} else {
return true; // Unable to find a matching user_id for source_region
}
请注意,user_ids 是 Hashmap,source_region 是 String。
我相信我正在检查 toString() 所依赖的所有内容中的空值,那么为什么 Android Studio 仍会发出此警告?
【问题讨论】:
-
source_region的值是多少?最后一部分似乎不正确user_ids.get(source_region) != ""将其更改为之前的检查!"".equals(user_ids.get(source_region)) -
@YCF_L 我会将其更改为
! user_ids.get(source_region).isEmpty(),或者如果您不喜欢!和isEmpty()之间的“距离”,请使用user_ids.get(source_region).length() != 0 -
@Andreas 如果
user_ids.get(source_region)返回 null 怎么办?但你可以告诉我已经检查过user_ids.get(source_region) != null:) 好点 -
user_ids.containsKey(source_region)是多余的,因为如果user_ids.get(source_region) != null为真,那么containsKey也为真。 ---"".equals(source_region)?!?您确定吗?你没有错过!,是吗?此外,考虑到地图不会(可能)包含""作为键,检查不是多余的吗? -
@YCF_L 不,第二条评论是针对 OP 的。
标签: java android-studio nullpointerexception