Когда разработчики взаимодействуют с нестандартными API, они обычно запускаются в "непроверенные" предупреждения. Рассмотрим следующий пример:
import java.util.AbstractList;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class IterableNodeList<T extends Node> extends AbstractList<T>
{
private NodeList list;
public IterableNodeList(NodeList list)
{
this.list = list;
}
public T get(int index)
{
return (T)this.list.item(index);
}
public int size()
{
return this.list.getLength();
}
}
Можно было бы, конечно, приложить усилия, чтобы написать это так, чтобы не было предупреждения: используя параметр типа T
в классе и аргумент конструктора Class<T>
, сопоставляя переменную-член и вызов cast()
.
В качестве альтернативы можно было бы просто просто отредактировать конфигурацию IDE и создать скрипты (например, Maven POM), чтобы полностью отключить это предупреждение компилятора. Теперь, если бы мы это сделали, код мог остаться таким, каким он есть, но я уверен, что у этого дела должны быть недостатки. Однако я не могу представить никаких разумных, реалистичных примеров, где
- это предупреждение дает больше значения, чем "наклеить на
@SuppressWarnings
здесь, нет никакой другой опции в любом случае" и где - полученный код действительно ведет себя по-другому (и безопаснее), чем тот, где мы игнорировали (отключили) предупреждение.
Можете ли вы придумать такие примеры или назвать еще одну причину, по которой отключение этих "непроверенных" предупреждений во всем мире - плохая идея? Или это на самом деле хорошая идея?
UPDATE
Предыдущие примеры фактически не вызывали предупреждения. Некоторые ответы уже не имеют смысла. Извините за неудобства.