Ответ 1
Непроверенный бросок означает, что вы (неявно или явно) кастинг от общего типа к неквалифицированному типу или наоборот. Например. эта строка
Set<String> set = new HashSet();
выдаст такое предупреждение.
Обычно для таких предупреждений есть веская причина, поэтому вам следует попытаться улучшить свой код, а не подавлять предупреждение. Цитата из Effective Java, 2nd Edition:
Устранить любое непроверенное предупреждение, которое вы можете. Если вы устранить все предупреждения, вы уверены, что ваш код является типичным, что очень хорошая вещь. Это означает, что вы не получите
ClassCastException
во время выполнения, и это повышает вашу уверенность в том, что ваша программа ведет себя так, как вы планировали.Если вы не можете устранить предупреждение, и вы можете доказать, что код, который спровоцированное предупреждение является типичным, затем (и только тогда) подавляет предупреждение с аннотацией
@SuppressWarnings("unchecked")
. Если вы подавляете предупреждения без предварительного доказательства того, что код является типичным, вы предоставляете себе ложное чувство безопасности. Код может компилироваться без каких-либо предупреждений, но он все равно может выброситьClassCastException
во время выполнения. Если, однако, вы игнорируете непроверенные предупреждения, которые, как вам известно, безопасны (вместо их подавления), вы не заметят, когда появится новое предупреждение, представляющее реальную проблему. новое предупреждение будет потеряно среди всех ложных тревог, которые вы не отключили.
Конечно, не всегда так легко устранить предупреждения, как с приведенным выше кодом. Не видя своего кода, вы не можете сказать, как сделать его безопасным.