Подтвердить что ты не робот

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

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

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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

@SuppressWarnings("fallthrough")

Ответ 2

Является ли аннотация @SuppressWarnings (javadoc), что вы ищете?

Например:

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

Ответ 3

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

@SuppressWarnings("fallthrough")

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

Ответ 4

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

Ответ 5

@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
    }
}