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

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

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

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

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

Какие Идеи?

5 ответов


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

@SuppressWarnings("fallthrough")

- Это аннотации @SuppressWarnings (javadoc) что вы ищете?

например:

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

чтобы завершить другой ответ о SuppressWarnings:

@SuppressWarnings("fallthrough")

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


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


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