Рубрики
Без рубрики

Эффективная Java! Устраните Непроверенные Предупреждения

Погружение в главу 27 “Эффективная Java”. Помеченный как java, эффективный, универсальный, архитектура.

По мере того как вы начнете использовать все больше и больше дженериков, вы часто будете сталкиваться с большим количеством непроверенных предупреждений. Поскольку Java имеет обратную совместимость с помощью необработанных типов, как обсуждалось в нашем обзоре предыдущей главы, компилятор не помешает нам писать код, небезопасный для типов. Даже если это не помешает нам скомпилировать, это даст нам предупреждения. Именно на этих предупреждениях мы сосредоточим внимание в этой главе.

Что касается предупреждений, то некоторые из них труднее устранить, чем другие. Некоторые предупреждения просто требуют, чтобы мы добавили тип в объявление. Например, следующий код выдаст непроверенное предупреждение:

Set myStrings = HashSet();

Мы можем исправить это так же просто, как:

Set myStrings = HashSet<>();

В этом случае нам даже не нужно указывать тип справа, так как оператор diamond ( <> ) заставит компилятор определить тип. В некоторых других случаях удалить непроверенные исключения может быть не так просто, но если мы сможем избавиться от всех непроверенных исключений, мы сможем получить уверенность в том, что у нас не будет исключения ClassCastException.

Так что, если мы окажемся в ситуации, когда мы либо не можем избавиться от предупреждения, либо предупреждение появляется, даже если мы знаем, что нет риска исключения приведения класса? Если у нас нет других вариантов, следующим шагом будет аннотирование непроверенного использования с помощью аннотации @SuppressWarnings("непроверено") . Это, как следует из названия, подавит предупреждение, чтобы мы не были погребены в предупреждениях и поэтому мы можем уделить должное внимание будущим непроверенным предупреждениям. Итак, что мы должны иметь в виду, подавляя эти предупреждения?

  • Подавляйте предупреждения только для местоположений, которые, как вы знаете, уже безопасны для типов.
  • Поместите аннотацию suppresswarnings в наименьшую область, в которой вы можете выполнить желаемое подавление.
  • Предоставьте комментарий для будущих разработчиков о том, почему существует аннотация suppresswarnings и почему она по-прежнему безопасна.

Вот к чему все сводится. Удалите все предупреждения (честно говоря, все предупреждения, а не только непроверенные, на которых мы сосредоточены в этой главе), и во всех местах, где вы не можете исправить предупреждения, подавите предупреждения.

Оригинал: “https://dev.to/kylec32/effective-java-elminate-unchecked-warnings-2022”