考虑以下方法:
void foo(Map<String, String> map) {
String v = map.get("key");
if (v == null) {}
System.out.println(v.toUpperCase());
}
IntelliJ(由于公司标准而坚持第14版)非常正确地警告我v.toUpperCase()
可能会抛出NullPointerException。但是使用以下代码,即没有if
语句,没有警告:
void foo(Map<String, String> map) {
String v = map.get("key");
System.out.println(v.toUpperCase());
}
如果我先不进行if
检查,是否有一些配置会阻止NPE发出警告?或者这个错过的警告已被修复&#34;在以后的版本?
答案 0 :(得分:2)
此处的行为在版本2018.1中保持不变。
如果添加空检查,代码检查会将变量假定为Nullable
,因此会警告您对此变量进行进一步未经检查的调用。
您可以通过@SuppressWarnings("ConstantConditions")