Java: Как @SuppressWarnings недоступный код? - PullRequest
9 голосов
/ 17 мая 2011

Иногда, когда вы отлаживаете, у вас есть недоступный фрагмент кода. Есть ли способ подавить предупреждение?

Ответы [ 4 ]

10 голосов
/ 17 мая 2011

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

if(false) {
    // code you don't want to run
    }

Аналогично, если вы временно вставляете досрочное завершение для отладки, вы можете сделать это так:

if(true) { return blah; }

или

if(true) { throw new RuntimeException("Blow Up!"); }

И обратите внимание, что спецификация Java явно заявляет, что постоянно ложные условные блоки удаляются во время компиляции, а IIRC, постоянно истинные, удаляют условие. Это включает в себя такие как:

public class Debug
{
static public final boolean ON=false;
}

...

if(Debug.ON) {
    ...
    }
6 голосов
/ 17 мая 2011

Единственный способ сделать это на любом компиляторе - это @SuppressWarnings("all").

Если вы используете Eclipse, попробуйте @SuppressWarnings("unused").

3 голосов
/ 17 мая 2011

В соответствии с Спецификацией языка Java :

Ошибка во время компиляции, если оператор не может быть выполнен из-за недоступности.1008 * Иногда вы можете превратить недоступный код в мертвый код (например, тело if (false) {...}).Но это ошибка является частью определения языка.

3 голосов
/ 17 мая 2011

Как Клет говорит нам ,

Это зависит от вашей IDE или компилятора.

Тем не менее, по крайней мере для Eclipse, нет способа сделать это. В моей конфигурации Eclipse недоступный код вызывает ошибку во время компиляции, а не просто предупреждение. Также обратите внимание, что это отличается от «мертвого кода», например

if (false)
{
    // dead code here
}

, для которого Eclipse (по умолчанию) выдает предупреждение, а не ошибку.

...