StatementWithEmptyBody 的目的是什么?

What is the purpose of StatementWithEmptyBody?

当我在 Android Studio 中为我的项目创建抽屉栏时,在 select 项目的代码中放置下一个:

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {

但是这个注解有什么用呢?

如果您没有在该方法中插入任何代码,注释将确保不会为该方法生成警告。

当你有一个大括号内没有代码的语句时,Android Studio 将对此发出警告。注释在具有此注释的方法中抑制此警告。

空体语句示例("else"部分的体为空):

if (something) {
    doThis();
} else {

}

这些警告非常有用,可让您仔细检查是否没有忘记编码。仅在有充分理由时才关闭它们(带有注释)。

警告本身解释了含义。

return onNavigationItemSelected 的类型是 boolean. 我们需要 return 任何 boolean 值。

如果 onNavigationItemSelected 中有 if 条件但没有 return 则 @SuppressWarnings("StatementWithEmptyBody") 需要添加。

示例:

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.xyz) {
       // you should return boolean value here.
    }
    return false;
}

在示例中,我们默认 returning false。 return

中没有任何值

if (id == R.id.xyz)条件.

warning你可以清楚的看一下

这可以防止以下情况:

if(condition)
{
 //empty body
}

private void methodeName(){
  //empty body
}

出现的错误迫使您显式地放置空的 {}

我可能应该澄清一下,抑制确实有价值的警告是一件愚蠢的事情。靠作弊得到的一份干净的健康证明显然一文不值。如果有选择,您应该始终修复编译器注意到的问题,而不是只是对它视而不见。然而,有些地方编译器无法确定某些东西是否会成为问题(Java 的泛型就是这样的一个地方),更好的选择是检查每个这样的实例然后抑制在此特定位置发出警告,而不是完全关闭此 class 警告,这样可能会错过真正的警告。