Я использую @SuppressWarnings("unchecked")
и в @SuppressWarnings("null")
основном выше методы, чтобы код компилировался без каких-либо предупреждений, но у меня есть сомнения. Нашел этот вопрос Stackoverflow . Джон Скит написал ответ, который я нахожу интригующим.
По его словам,
Иногда дженерики Java просто не позволяют вам делать то, что вы хотите, и вам нужно эффективно сообщить компилятору, что то, что вы делаете, действительно будет законным во время выполнения.
Но что, если есть шанс, что будет выдано исключение? Не является ли подавление предупреждений плохой идеей? Разве я не должен знать о местах, где могут возникнуть проблемы?
Кроме того, что если кто-то еще позже изменит мой код и добавит некоторые сомнительные функции, не удаляя SuppressWarnings? Как этого можно избежать и / или есть ли другая альтернатива этому?
Должен ли я использовать @SuppressWarnings("unchecked")
и @SuppressWarnings("null")
?
Обновление № 1
Что касается непроверенных приведений типов, согласно этому ответу (указанному @gnat в комментариях ниже), подавление этих предупреждений необходимо.
Многие необходимые библиотеки Java никогда не обновлялись, чтобы исключить необходимость небезопасных типов. Подавление этих предупреждений необходимо, чтобы другие более важные предупреждения были замечены и исправлены.
В случае подавления других предупреждений, все еще в некоторой серой области.
Обновление № 2
Согласно Oracle Docs (также упоминается в некоторых ответах ниже):
В целях стиля программисты всегда должны использовать эту аннотацию для наиболее глубоко вложенного элемента, где она эффективна. Если вы хотите подавить предупреждение в конкретном методе, вы должны аннотировать этот метод, а не его класс.