Какова цель StatementWithEmptyBody? - PullRequest
0 голосов
/ 05 февраля 2019

когда я создал панель ящиков в Android Studio для своего проекта, в коде для выбранных элементов укажите следующее:

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

Но какая польза от этой аннотации?

Ответы [ 4 ]

0 голосов
/ 05 февраля 2019

Это защищает от таких вещей, как:

if(condition)
{
 //empty body
}

ИЛИ

private void methodeName(){
  //empty body
}

Возникшая ошибка вынуждает вас явно поставить пустое{}

Я, вероятно, должен пояснить, что подавлять предупреждение, которое имеет свои достоинства, глупо.Чистый счет здоровья, который вы получили путем обмана, очевидно, ничего не стоит.Учитывая выбор, вы всегда должны исправлять проблему, замеченную компилятором, а не просто закрывать на это глаза.Тем не менее, существуют области, в которых компилятор не может быть уверен, что что-то будет проблемой или нет (дженерики Java - одна из таких областей), и там лучше выбрать просмотр каждого такого экземпляра, а затем скорее подавить предупреждение в этом конкретном месте.чем вообще отключить этот класс предупреждений и, возможно, пропустить настоящий.

0 голосов
/ 05 февраля 2019

Если в фигурных скобках есть оператор без кода, Android Studio выдаст предупреждение об этом.Аннотация подавляет это предупреждение в методе, имеющем эту аннотацию.

Пример оператора с пустым телом (тело части "else" пусто):

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

}

Эти предупреждения полезны дляпозвольте вам дважды проверить, не забыли ли вы что-то кодировать.Отключайте их (вместе с аннотацией) только тогда, когда у вас есть для этого веская причина.

0 голосов
/ 05 февраля 2019

Предупреждение само по себе объясняет значение.

тип возврата onNavigationItemSelected равен boolean., и нам нужно вернуть любое значение boolean.

Если в * есть условие if1009 * и не возвращается, тогда @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

0 голосов
/ 05 февраля 2019

В случае, если вы не вставили какой-либо код в этот метод, аннотация обеспечит отсутствие предупреждений для этого метода.

...