Какой хак я могу использовать для подавления предупреждения о неиспользованной функции? - PullRequest
5 голосов
/ 25 марта 2010

Рассмотрим закрытый метод, который вызывается из JNI и не используется иначе, генерируя предупреждение компилятора о неиспользуемом методе:

private void someMethodCalledOnlyFromJNI() { // WARNING: method is never used
    // ....
}

Это некоторый унаследованный код в Java 1.4 - так что без @SuppressWarnings.

Какой хак вы бы использовали для подавления этого предупреждения компилятора?


Редактировать: Очевидно, что это всего лишь предупреждение, и его можно легко проигнорировать. Но лично я ненавижу предупреждения в своем коде так же сильно, как и не хочу видеть в нем ошибки. AFAIC - мой код должен содержать 0 предупреждений , это может быть преувеличением, но я очень педантичен по этому поводу.

В качестве примера, кто-то может увидеть эту функцию, не знать, что она используется из JNI, и просто удалить ее.

Ответы [ 5 ]

7 голосов
/ 25 марта 2010
  1. Игнорировать это. В конце концов, это предупреждение - лучший вариант
  2. используйте protected (и добавьте комментарий по причине) - терпимо
  3. Создайте фиктивный метод прямо над ним и заставьте два вызывать друг друга (снова с комментариями) - некрасиво
  4. настроить IDE так, чтобы это предупреждение вообще не отображалось (в eclipse это Windows > Preferences > Java > Compiler > Errors/Warnings) - не предпочтительно

Согласно вашему обновлению : наличие 0 предупреждений не является целью, которую вы должны установить. Количество предупреждений зависит от настроек, поэтому, если у вас не все объединенные IDE, это число будет отличаться. И затем вы можете добавить checkstyle / PMD, чтобы сообщить о предупреждениях - тогда у вас будет еще больше. Разумное поведение - иметь порог предупреждений.

Если вы не хотите, чтобы кто-либо удалял этот метод, просто добавьте комментарий:

// This method is used is used by JNI. (Don't delete)
5 голосов
/ 25 марта 2010

Где-то еще в классе:

     if(Boolean.FALSE.booleanValue())
     { // prevents warning for unused private method which is used from JNI
         someMethodCalledOnlyFromJNI();
     }

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

3 голосов
/ 25 марта 2010

Либо просто проигнорируйте предупреждение, либо объявите его как protected. Если вы выберете protected и хотите также предотвратить подкласс / переопределение, объявите его также final.

1 голос
/ 25 марта 2010

Начнем с того, что это всего лишь предупреждение, поэтому это не должно быть проблемой для вас.

Вы можете изменить код, чтобы удалить эту функцию, что устранит проблему.

Или просто вызовите его откуда-нибудь в начале / конце вашего кода и проигнорируйте любые результаты. Пока вы не попытаетесь настроить что-либо, что повлияет на остальную часть вашей программы, у вас все будет в порядке.

0 голосов
/ 25 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...