我有一个小代码,它给出了错误的棉绒警告:
int myfunc(@Nullable valStr) {
int val = -1;
if (!TextUtils.isEmpty(valStr)) {
try {
val = valStr.startsWith("1-"); //<== lint warning here : NullPointerException
} catch (Exception e) {
}
}
return val;
}
此代码给出了不起毛的警告,指出valStr
可能是null
,这是不可能的,因为我已经用valStr
检查了TextUtils.isEmpty()
。如何为if
块语句禁用此警告?我不想为@SuppressLint
的整个功能禁用它。
答案 0 :(得分:1)
执行!TextUtils.isEmpty(valStr)
而不是valStr != null
。通过这种方式,棉绒将知道您已经检查了null
的值。
或者,您可以像这样使用assert
:assertNotNull(valStr)
答案 1 :(得分:0)
禁用警告的简单代码注释为:
//noinspection SimplifiableIfStatement
在if语句之上的此功能仅应在该位置关闭警告。
在示例中,这将是:
int myfunc(@Nullable valStr) {
int val = -1;
//noinspection SimplifiableIfStatement
if (!TextUtils.isEmpty(valStr)) {
try {
val = valStr.startsWith("1-"); //<== lint warning here : NullPointerException
} catch (Exception e) {
}
}
return val;
}