StatementWithEmptyBody的目的是什么?

时间:2019-02-05 11:00:55

标签: android suppress-warnings

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

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

但是此注释的用途是什么?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

警告本身会解释含义。

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

如果if中有onNavigationItemSelected个条件但未返回,则需要添加@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

答案 2 :(得分:3)

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

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

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

}

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

答案 3 :(得分:3)

这可以防止类似的事情发生:

if(condition)
{
 //empty body
}

OR

private void methodeName(){
  //empty body
}

引发的错误迫使您显式放置空{}

我可能应该澄清,抑制确实有优点的警告是一件愚蠢的事情。通过作弊获得健康的健康账单显然一文不值。在做出选择之后,您应该始终解决编译器注意到的问题,而不是仅仅视而不见。但是,在某些区域中,编译器无法确定是否会出现问题(Java的泛型就是其中一个区域),更好的选择是查看每个此类实例,然后在此特定位置隐藏警告,而不是而不是完全关闭此类警告并可能错过真正的警告。