What causes javac to issue the "uses unchecked or unsafe operations" warning
Что заставляет javac выдавать предупреждение "использует непроверенные или небезопасные операции"
Например:
javac Foo.java Note: Foo.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
Переведено автоматически
Ответ 1
Это появляется в Java 5 и более поздних версиях, если вы используете коллекции без спецификаторов типов (например, Arraylist() вместо ArrayList<String>()). Это означает, что компилятор не может проверить, используете ли вы коллекцию типобезопасным способом, используя дженерики.
Чтобы избавиться от предупреждения, вам нужно уточнить, какой тип объектов вы храните в коллекции. Итак, вместо
ListmyList=newArrayList();
использование
List<String> myList = newArrayList<String>();
В Java 7 вы можете сократить общее создание экземпляра, используя вывод типа.
List<String> myList = newArrayList<>();
Ответ 2
Если вы сделаете то, что он предлагает, и перекомпилируете с помощью параметра "-Xlint: непроверенный", это даст вам более подробную информацию.
Помимо использования необработанных типов (как описано в других ответах), непроверенное приведение также может вызвать предупреждение.
После компиляции с помощью -Xlint вы сможете переработать свой код, чтобы избежать предупреждения. Это не всегда возможно, особенно если вы интегрируетесь с устаревшим кодом, который нельзя изменить. В этой ситуации вы можете решить отключить предупреждение в тех местах, где вы знаете, что код правильный: