Max_Cohen
@Max_Cohen
Программист, который не программирует

Что означает ошибка «Test.java uses unchecked or unsafe operations»?

Вот код.
import java.util.*;
class Test {
    public static void main(String[] args) {
        Vector v = new Vector();
        String s = "Строка, которую мы хотим разобрать на слова.";
        StringTokenizer st = new StringTokenizer(s, " \t\n\r,.");
        while (st.hasMoreTokens()) {
            // Получаем слово и заносим в вектор
            v.add(st.nextToken()); // Добавляем в конец вектора
        }
        System.out.println(v.firstElement()); // Первый элемент System.out.println(v.lastElement()); // Последний элемент
        v.setSize(4); // Уменьшаем число элементов
        v.add("собрать."); // Добавляем в конец укороченного вектора
        v.set(3, "опять"); // Ставим в позицию 3
        for (int i = 0; i < v.size(); i++) // Перебираем весь вектор 
            System.out.print(v.get(i) + " ");
        System.out.println();
    }
}

Ошибка такая:
Note: Test.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.


Потом Я добавил параметр -XLint при компиляции.

Test.java:9: error: no suitable method found for add(String)
            v.add(st.nextToken()); // Добавляем в конец вектора
             ^
    method Collection.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method List.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method AbstractCollection.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method AbstractList.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method Vector.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
Test.java:13: error: no suitable method found for add(String)
        v.add("собрать."); // Добавляем в конец укороченного вектора
         ^
    method Collection.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method List.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method AbstractCollection.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method AbstractList.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method Vector.add(StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
Test.java:14: error: no suitable method found for set(int,String)
        v.set(3, "опять"); // Ставим в позицию 3
         ^
    method List.set(int,StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method AbstractList.set(int,StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
    method Vector.set(int,StringTokenizer) is not applicable
      (argument mismatch; String cannot be converted to StringTokenizer)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3 errors


Дальше параметр -XLint:uncheced
Test.java:9: warning: [unchecked] unchecked call to add(E) as a member of the raw type Vector
            v.add(st.nextToken()); // Добавляем в конец вектора
                 ^
  where E is a type-variable:
    E extends Object declared in class Vector
Test.java:13: warning: [unchecked] unchecked call to add(E) as a member of the raw type Vector
        v.add("собрать."); // Добавляем в конец укороченного вектора
             ^
  where E is a type-variable:
    E extends Object declared in class Vector
Test.java:14: warning: [unchecked] unchecked call to set(int,E) as a member of the raw type Vector
        v.set(3, "опять"); // Ставим в позицию 3
             ^
  where E is a type-variable:
    E extends Object declared in class Vector
3 warnings


Кто уже программирует на Java, прошу помочь. Учу по такой книге:
Самоучитель Java – Хабибуллин Ильдар Шаукатович
  • Вопрос задан
  • 4569 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Сделай:
Vector<String> v = new Vector<String>();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zolt85
@zolt85
Программист
Ошибки никакой нет, чисто синтаксически. Не используйте Vector. Возьмите вместо него типизированный List
Именно на Vector ругнулся компилятор, ибо он хоть и есть, но не рекомендуется к использованию.
List<String> v = new ArrayList<>();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы