Как подавить предупреждения компилятора Java для определенных функций

Нас всегда учат использовать break в операторах switch, чтобы избежать провалов.

Компилятор Java предупреждает об этих ситуациях, чтобы помочь нам не допустить тривиальных (но серьезных) ошибок.

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

Однако компилятор выдает огромное количество предупреждений, которые могут скрыть предупреждения, о которых мне нужно знать. Я знаю, как я могу изменить компилятор, чтобы игнорировать ВСЕ предупреждения о провале, но я хотел бы реализовать это на основе метода за методом, чтобы не пропустить место, где я не собирался просыпаться.

Любые идеи?

Ответов (5)

Решение

Если вы действительно, действительно должны это сделать и уверены, что не ошибаетесь , ознакомьтесь с аннотацией @SuppressWarnings . Я полагаю в твоем случае тебе нужно

@SuppressWarnings("fallthrough")
@SuppressWarnings("fallthrough")

Java всегда придерживалась C-стиля операторов switch, где вам нужно явно выйти из переключателя, если вы не хотите просто провалиться и выполнить код в приведенном ниже случае. Конечно, это может быть опасно, и ошибки такого рода очень сложно отследить. В следующем примере в случае 1 перерыв отсутствует:

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}

Это аннотация @SuppressWarnings ( javadoc ), которую вы ищете?

Например:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}

Чтобы заполнить другой ответ о SuppressWarnings:

@SuppressWarnings("fallthrough")

Попытка подавить все предупреждения о провале на уровне компилятора - это плохо: как вы объяснили, случаи, когда вам нужно передать предупреждение, четко определены. Таким образом, это должно быть явно прописано в коде ( @SuppressWarnings("fallthrough") аннотация с дополнительным комментарием приветствуется). При этом у вас по-прежнему будет предупреждение о провале, если вы действительно забудете какой-то разрыв в вашем коде.

Вы можете создать структуру операторов if вместо переключателя. Возможно, это не так визуально приятно, но и подавление предупреждения тоже не является.