StatementWithEmptyBody的目的是什么?

问题描述 投票:8回答:4

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

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

但是这个注释的用途是什么?

android suppress-warnings
4个回答
4
投票

警告本身解释了意义。

返回类型的onNavigationItemSelectedboolean.,我们需要返回任何boolean值。

如果在ifonNavigationItemSelected条件而没有返回,那么@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;
}

在示例中,我们默认返回false。我们没有返回任何价值

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

你可以清楚地看一下警告。

suppress warning


4
投票

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


3
投票

当您在大括号内有一个没有代码的语句时,Android Studio会发出警告。注释在具有此注释的方法中禁止此警告。

带有空体的语句示例(“else”部分的主体为空):

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

}

这些警告对于让您仔细检查是否忘记编写代码非常有用。只有在有充分理由的情况下才能关闭它们(带注释)。


3
投票

这可以防止以下事情:

if(condition)
{
 //empty body
}

要么

private void methodeName(){
  //empty body
}

引发的错误迫使您明确地将空{}

我应该澄清一下,压制一个确实具有优点的警告是一件很愚蠢的事情。通过作弊获得的健康清单显然毫无价值。鉴于选择,你应该始终解决编译器注意到的问题,而不是只关闭它。但是,在某些方面编译器无法确定是否存在某些问题(Java的泛型就是这样的区域),并且更好的选择是检查每个这样的实例然后在这个特定的位置抑制警告而不是而不是完全关掉这类警告,可能会错过一个真正的警告。

© www.soinside.com 2019 - 2024. All rights reserved.