Как подавить предупреждения компилятора Java для определенных функций
-
09-09-2019 - |
Вопрос
Нас всегда учат быть уверенными, что мы используем перерыв в операторах switch, чтобы избежать сбоев.
Компилятор Java предупреждает об этих ситуациях, чтобы помочь нам не допускать тривиальных (но серьезных) ошибок.
Я, однако, использовал выпадающий список в качестве функции (нам не нужно вдаваться в подробности здесь, но это обеспечивает очень элегантное решение).
Однако компилятор выдает огромное количество предупреждений, которые могут скрывать предупреждения, о которых мне нужно знать.Я знаю, как я могу изменить компилятор, чтобы игнорировать ВСЕ предупреждения о сбоях, но я хотел бы реализовать это на основе каждого метода, чтобы не пропустить место, где я не предполагал, что произойдет сбой.
Есть какие-нибудь идеи?
Решение
Если вам действительно, действительно необходимо это сделать, и вы уверены, что не совершаете ошибки, ознакомьтесь с аннотация @SuppressWarnings.Я полагаю, в вашем случае вам нужно
@SuppressWarnings("fallthrough")
Другие советы
Является аннотацией @SuppressWarnings
(Javadoc) что вы ищете?
Например:
@SuppressWarnings("unchecked")
public void someMethod(...) {
...
}
Чтобы завершить другой ответ о SuppressWarnings
:
@SuppressWarnings("fallthrough")
Пытаться подавить все аварийные предупреждения на уровне компилятора - это плохо:как вы объяснили, случаи, когда вам необходимо пройти через предупреждение, четко определены.Таким образом, это должно быть явно записано в коде (the @SuppressWarnings("fallthrough")
аннотация с дополнительным комментарием приветствуется).Поступая таким образом, вы по-прежнему будете иметь аварийное предупреждение, если вы действительно забудете о разрыве где-нибудь еще в своем коде.
Вы могли бы создать структуру операторов 'if' вместо switch .Может быть, это не так визуально приятно, однако подавление предупреждений также не является таковым.
@SuppressWarnings("fallthrough")
Java всегда следовала инструкциям switch в стиле C, где вам нужно явно выйти из switch, если вы не хотите просто провалиться и выполнить код в приведенном ниже примере.Конечно, это может быть опасно, и ошибки такого рода бывает очень трудно отследить.В следующем примере в случае 1 отсутствует разрыв:
@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
switch (i)
{
case 1:
// Execute both 1 and 2
case 2:
// Execute only 1
}
}