- [Solved] uses unchecked or unsafe operations. recompile with -xlint:unchecked for details.
- What is warning message: uses unchecked or unsafe operations
- How to resolve warning message: uses unchecked or unsafe operations.
- Что заставляет javac выдавать предупреждение «использует непроверенные или небезопасные операции»
- FirebaseCorePlugin.java uses unchecked or unsafe operations. #28770
- Comments
- kw2019ltd commented Mar 2, 2019
- breezage commented Mar 27, 2019
- joxad commented Mar 29, 2019
- hariangr commented Mar 29, 2019
- PandaGeek1024 commented Mar 30, 2019 •
- ishakdas commented Apr 8, 2019
- EduardoLR10 commented May 8, 2019
- ktchernov commented May 9, 2019
- GustavoContreiras commented May 20, 2019
- Matze5590 commented May 20, 2019 •
- bradmuzza commented May 25, 2019
- miente-dijkstra commented May 28, 2019
- mohamedHassanKa commented May 29, 2019
- juanagu commented May 31, 2019
- julianfalcionelli commented Jun 6, 2019
- kw2019ltd commented Jun 8, 2019
- jeanbatm commented Jul 16, 2019
- repentsinner commented Jul 16, 2019
- Что заставляет javac выдавать предупреждение «uses unchecked or unsafe operations»
- 12 ответов
- Похожие вопросы:
[Solved] uses unchecked or unsafe operations. recompile with -xlint:unchecked for details.
In this post, we will see about warning message uses unchecked or unsafe operations. recompile with -xlint:unchecked for details in java.
Table of Contents
What is warning message: uses unchecked or unsafe operations
uses unchecked or unsafe operations is displayed when you compile code which compiler considers to be lacking in error checking or unsafe in some way. It’s a warning, not an error, and will not prevent you from compiling the code.
You will generally get this warning when you are using collection without using type specifier (e.g. ArrayList() instead of ArrayList ) in your code.
Example:
Let’s say you have simple java code to print ArrayList.
When you will compile the code, you will get below output:
As you can see, compile gives us warning message that PrintArrayListMain.java uses unchecked or unsafe operations.
We are getting this warning message because we did not use generics with ArrayList.
If you want to know about unchecked or unsafe operations, you can use below command:
C:\Users\Arpit\Desktop\javaPrograms>javac PrintArrayListMain.java -Xlint:unchecked
PrintArrayListMain.java:9: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
countryList.add(“India”);
^
where E is a type-variable:
E extends Object declared in class ArrayList
PrintArrayListMain.java:10: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
countryList.add(“China”);
^
where E is a type-variable:
E extends Object declared in class ArrayList
PrintArrayListMain.java:11: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
countryList.add(“Bhutan”);
^
where E is a type-variable:
E extends Object declared in class ArrayList
3 warnings
How to resolve warning message: uses unchecked or unsafe operations.
You can resolve this warning message by using generics with Collections.
In our example, we should use ArrayList rather than ArrayList() .
Источник
Что заставляет javac выдавать предупреждение «использует непроверенные или небезопасные операции»
Это происходит в Java 5 и более поздних версиях, если вы используете коллекции без спецификаторов типов (например, Arraylist() вместо ArrayList () ). Это означает, что компилятор не может проверить, что вы используете коллекцию безопасным для типов способом, используя дженерики. .
Чтобы избавиться от предупреждения, просто уточните, какой тип объектов вы храните в коллекции. Итак, вместо
В Java 7 вы можете сократить общее создание экземпляров, используя вывод типа .
Если вы сделаете то, что он предлагает, и перекомпилируете с ключом «-Xlint: unchecked», он даст вам более подробную информацию.
Помимо использования необработанных типов (как описано в других ответах), неконтролируемое приведение также может вызывать предупреждение.
После того как вы скомпилировали с -Xlint, вы сможете переработать свой код, чтобы избежать предупреждения. Это не всегда возможно, особенно если вы интегрируете с устаревшим кодом, который нельзя изменить. В этой ситуации вы можете решить отключить предупреждение в тех местах, где вы знаете, что код правильный:
Для Android Studio необходимо добавить:
в файле build.gradle вашего проекта, чтобы узнать, где возникает эта ошибка.
Это предупреждение означает, что ваш код работает с необработанным типом, перекомпилируйте пример с
чтобы получить детали
У меня было 2 года классов и несколько новых классов. Я решил это в Android Studio следующим образом:
И потом, если осталось несколько Метедов:
например, когда вы вызываете функцию, которая возвращает общие коллекции, и вы не указываете общие параметры самостоятельно.
сгенерирует эту ошибку.
Для ее решения достаточно добавить параметры
Предупреждение о «непроверенных или небезопасных операциях» было добавлено, когда Java добавил Generics , если я правильно помню. Обычно он просит вас быть более ясным о типах, так или иначе.
Например. код ArrayList foo = new ArrayList(); вызывает это предупреждение, потому что Javac ищет ArrayList foo = new ArrayList ();
Я просто хочу добавить один пример неконтролируемого предупреждения, которое я вижу довольно часто. Если вы используете классы, которые реализуют интерфейс, такой как Serializable, часто вы будете вызывать методы, которые возвращают объекты интерфейса, а не фактический класс. Если возвращаемый класс должен быть приведен к типу, основанному на обобщениях, вы можете получить это предупреждение.
Вот краткий (и несколько глупый) пример для демонстрации:
getInstance () возвращает объект, который реализует Serializable. Это должно быть приведено к фактическому типу, но это непроверенное приведение.
Решением будет использование определенного типа в <> лайке ArrayList .
Приведенный выше код генерирует предупреждение, потому что ArrayList не имеет определенного типа.
код выше подойдет. Только изменение в третьей строке после ArrayList .
Вы можете сохранить его в общей форме и записать как:
Установка типа ArrayList в качестве объекта дает нам преимущество для хранения любого типа данных. Вам не нужно использовать -Xlint или что-то еще.
Это предупреждение также может быть вызвано из-за
new HashMap () или новый ArrayList (), который является универсальным типом, должен быть конкретным, иначе компилятор выдаст предупреждение.
Пожалуйста, убедитесь, что если ваш код содержит следующее, вы должны изменить соответствующим образом
новый HashMap () => карта карта = новый HashMap () новый HashMap () => карта карта = новый HashMap <> ()
new ArrayList () => Список карт = новый ArrayList () Новый ArrayList () => Список карт = новый ArrayList <> ()
У меня есть ArrayList > items = (ArrayList >) value; . Поскольку value это сложная структура (я хочу очистить JSON ), могут быть любые комбинации чисел, логических значений, строк, массивов. Итак, я использовал решение @Dan Dyer:
Источник
FirebaseCorePlugin.java uses unchecked or unsafe operations. #28770
Comments
kw2019ltd commented Mar 2, 2019
Note: C:\Tools\flutter_windows_v1.0.0-stable\flutter.pub-cache\hosted\pub.dartlang.org\firebase_core-0.3.1+1\android\src\main\java\io\flutter\plugins\firebase\core\FirebaseCorePlugin.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
The text was updated successfully, but these errors were encountered:
breezage commented Mar 27, 2019
I also got this warning just now
joxad commented Mar 29, 2019
Same here, I updated my project to be Android X compliant, but it is still working.
hariangr commented Mar 29, 2019
I am currently trying to install Crashlytics, and get the same error
PandaGeek1024 commented Mar 30, 2019 •
Im getting the same error now. the only difference I can tell is I recently upgraded to AndroidX.
Here is my config
cloud_firestore: ^0.9.0
google_sign_in: ^4.0.0
firebase_auth: ^0.8.0+1
ishakdas commented Apr 8, 2019
still not found a solution?
EduardoLR10 commented May 8, 2019
The solution for this problem is all about using the latest and «greatest» versions of the packages. Once I started using the latest version all the warnings disappear.
ktchernov commented May 9, 2019
@EduardoLR10 on latest packages, still getting the same problem:
google_sign_in: ^4.0.1+3
firebase_auth: ^0.11.0
GustavoContreiras commented May 20, 2019
Same here today with these versions
Matze5590 commented May 20, 2019 •
+1
not able to build an apk.
bradmuzza commented May 25, 2019
I have the same issue
miente-dijkstra commented May 28, 2019
Had the same issue and solved it (in Android Studio): Go into File → Invalidate Caches / Restart
mohamedHassanKa commented May 29, 2019
i got the same problem too any solution
juanagu commented May 31, 2019
julianfalcionelli commented Jun 6, 2019
Got the same, fixed it by running Invalidate Caches & Restart, and then I was getting the «D8: Cannot fit requested classes in a single dex file (# methods: 90804 > 65536)» error which got fixed by enabling Multidex.
In the Project Gradle (project/app/build.gradle) add the following lines:
kw2019ltd commented Jun 8, 2019
still same issue with the newest versions
jeanbatm commented Jul 16, 2019
repentsinner commented Jul 16, 2019
@jeanbatm, can you repro after a flutter clean ?
The following still results in FirebaseCorePlugin.java uses unchecked or unsafe operations here.
Also tried rm -rf .pub-cache followed by flutter package get as an alternative cache repair mechanism and still no luck.
Источник
Что заставляет javac выдавать предупреждение «uses unchecked or unsafe operations»
12 ответов
согласно названию, я изо всех сил пытаюсь найти причину предупреждения unchecked or unsafe operations в каком-то коде. Если у меня есть следующий код, он компилируется без каких-либо предупреждений: public void test() < Set mySet = new HashSet (); Set .
Возможный Дубликат : Что вызывает javac, чтобы оформить «uses непроверенные или небезопасные operations» предупреждение public void setParameter(String name, String []values) < if (debug) System.out.println(LoginFilter::setParameter( + name + = + values + ) + localParams = +.
Это происходит в Java 5 и позже, если вы используете коллекции без спецификаторов типов (например, Arraylist() вместо ArrayList () ).), это означает, что компилятор не может проверить, что вы используете коллекцию типобезопасным способом, используя дженерики .
Чтобы избавиться от предупреждения, просто уточните, какой тип объектов вы храните в коллекции. Итак, вместо
В Java 7 Вы можете сократить общий экземпляр с помощью вывода типа .
Если вы сделаете то, что он предлагает, и перекомпилируете с помощью переключателя «-Xlint:unchecked», он даст вам более подробную информацию.
Помимо использования необработанных типов (как описано в других ответах), непроверенное приведение также может вызвать предупреждение.
После компиляции с помощью-Xlint вы сможете переработать свой код, чтобы избежать предупреждения. Это не всегда возможно, особенно если вы интегрируетесь с устаревшим кодом, который не может быть изменен. В этой ситуации вы можете решить подавить предупреждение в тех местах, где вы знаете, что код правильный:
Для Android Studio вам нужно добавить:
в файле build.gradle вашего проекта, чтобы узнать, где возникает эта ошибка.
Это предупреждение означает, что ваш код работает с необработанным типом, перекомпилируйте пример с помощью
чтобы узнать подробности
У меня были занятия 2-летней давности и несколько новых классов. Я решил его в Android Studio следующим образом:
В моем проекте build.gradle файл ( Борж решение )
А потом если останется немного метамфетамина:
Следующий код: public void addGrillaListener(Stage stageToClose,Grilla listener) < GrillaHandler handy = new GrillaHandler<>(listener); if(stageToClose!=null) < stageToClose.addEventHandler(WindowEvent.WINDOW_HIDDEN,handy); >> заставляет компилятор показывать это.
В принципе, я довольно начинающий студент Java, и мне нужно создать простой GUI, который включает в себя JComboBox. Окно должно выглядеть так: http://i.imgur.com/Jg7j4XD.jpg Когда я компилирую код (показано ниже), он компилируется, но я получаю следующее предупреждение в jGRASP: Note: Lab6.java.
например, когда вы вызываете функцию, возвращающую универсальные коллекции, и сами не указываете универсальные параметры.
будет генерировать эту ошибку.
Чтобы решить эту проблему, вы просто добавите параметры
Предупреждение «unchecked or unsafe operations» было добавлено, когда java добавил дженерики, если я правильно помню. Обычно он просит вас быть более откровенным в отношении типов, так или иначе.
Например. код ArrayList foo = new ArrayList(); вызывает это предупреждение, потому что javac ищет ArrayList foo = new ArrayList ();
Я просто хочу добавить один пример непроверенного предупреждения, которое я вижу довольно часто. Если вы используете классы, реализующие такой интерфейс, как Serializable, часто вы будете вызывать методы, возвращающие объекты интерфейса, а не фактический класс. Если возвращаемый класс должен быть приведен к типу, основанному на универсалиях, вы можете получить это предупреждение.
Вот краткий (и несколько глупый) пример, чтобы продемонстрировать:
getInstance() возвращает объект, реализующий сериализуемый. Это должно быть приведено к фактическому типу, но это непроверенное приведение.
Решением было бы использовать определенный тип в <> , например ArrayList .
приведенный выше код генерирует предупреждение, поскольку ArrayList не имеет определенного типа.
приведенный выше код подойдет. Только изменение находится в третьей строке после ArrayList .
Вы можете сохранить его в общей форме и записать как:
Установка типа ArrayList в качестве объекта дает нам преимущество для хранения любого типа данных. Вам не нужно использовать -Xlint или что-то еще.
Это предупреждение также может быть поднято из-за
new HashMap() или new ArrayList(), то есть универсальный тип, должен быть специфичным, иначе компилятор выдаст предупреждение.
Пожалуйста, убедитесь, что если ваш код содержит следующее, Вы должны изменить его соответствующим образом
новый HashMap() => карта = новый HashMap() новый HashMap() => карта = новый HashMap<>()
новый ArrayList() => карта список = новый ArrayList() новый ArrayList() => карта список = новый ArrayList<>()
У меня есть ArrayList > items = (ArrayList >) value; . Поскольку value -это сложная структура (я хочу очистить JSON ), могут возникать любые комбинации чисел, булевых чисел, строк, массивов. Итак, я использовал раствор @Dan Dyer:
Похожие вопросы:
Я изучаю JavaFX, в частности пытаюсь реализовать таблицу с использованием классов TableColumn и TableView. Моя программа компилируется без ошибок, но во время компиляции я получаю зловещее.
Мой компилятор java жалуется, что мой код использует unchecked or unsafe operations. Есть идеи, какие строки вызывают это в двух фрагментах кода? @SuppressWarnings(unchecked) private final void.
Я недавно начал программировать в java я сделал этот код: https://github.com/mouuff/JavaMD5cracker Код работает, но я получаю это дурацкое предупреждение.
согласно названию, я изо всех сил пытаюсь найти причину предупреждения unchecked or unsafe operations в каком-то коде. Если у меня есть следующий код, он компилируется без каких-либо предупреждений.
Возможный Дубликат : Что вызывает javac, чтобы оформить «uses непроверенные или небезопасные operations» предупреждение public void setParameter(String name, String []values) < if (debug).
Следующий код: public void addGrillaListener(Stage stageToClose,Grilla listener) < GrillaHandler handy = new GrillaHandler<>(listener); if(stageToClose!=null) <.
В принципе, я довольно начинающий студент Java, и мне нужно создать простой GUI, который включает в себя JComboBox. Окно должно выглядеть так: http://i.imgur.com/Jg7j4XD.jpg Когда я компилирую код.
Читая исходный код класса HashMap, я заметил, что они используют (строка 149) transient Entry [] table; А затем они инициализируют его с помощью (строка 283) : table = new Entry[capacity];.
Существует ли параметр компилятора для javac, чтобы скомпилировать без бумажки? Я знаю о: -nowarn : не отображать предупреждения -g:none : чтобы не генерировать отладочную информацию Заметки.
Источник