Что означает ошибка компилятора небезопасных операций? - PullRequest
1 голос
/ 31 января 2010

Что означает эта ошибка?

Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Есть предложения, как избежать такой ошибки?

Ответы [ 3 ]

3 голосов
/ 31 января 2010

Это ошибка, которую вы получаете, когда используете Коллекции без указания типа. Вы, вероятно, что-то вроде:

ArrayList myList = new ArrayList(); // or some other Collection class

Если это так, вам нужно изменить это, чтобы указать, какой тип объектов вы хотите сохранить. Например:

ArrayList<String> myList = new ArrayList<String>();

Подробнее о Java Обобщения для получения дополнительной информации.

Это моя лучшая догадка, я не вижу ваш код и полное сообщение об ошибке. У этого сообщения могут быть и другие причины, это проблема, с которой я сталкивался раньше.

1 голос
/ 31 января 2010

Во-первых, перекомпилируйте с -Xlint: не отмечен, чтобы увидеть, в чем проблема. Тогда исправьте эти проблемы. Существует ряд потенциальных причин высокого уровня для непроверенных предупреждений. Во-первых, вы не указали параметры типа там, где вы должны их иметь. В некоторых ситуациях они неизбежны, и тогда вы можете отключить конкретное предупреждение, но это исключение, и следует позаботиться о том, чтобы вы не подавляли действительно важные предупреждения.

Поэтому перекомпилируйте с -Xlint: снимите флажок и опубликуйте дополнительные вопросы, если у вас возникнут проблемы с обнаруженными конкретными проблемами.

0 голосов
/ 31 января 2010

Что это значит?

Обобщения Java позволяют вам написать что-то вроде этого:

List<String> l = ...;
String s = l.get(0);  // note there is no explicit typecast.

Но если компилятор сообщает вам, что в вашем коде есть «непроверенные или небезопасные операции», он говорит, что вы нарушили правила безопасного использования обобщений, и ваш код может выдавать исключения приведения класса во неожиданные места; например в приведенном выше утверждении, где мы не указали тип.

Есть несколько вещей, из-за которых компилятор будет жаловаться на непроверенные или небезопасные операции, и каждая из них требует своего исправления. Сделайте то, что говорит вам компилятор, и запустите его с опцией -Xlint.

...