Как подавить предупреждения компилятора 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
}
}