Java, Предупреждающий использование Векторов: вызов непроверенный для добавления (E)

It’s персональное предпочтение главным образом. Я чищу их сам (Resharper делает хорошее задание сообщения мне когда there’s ненужные операторы использования).

можно было сказать, что это могло бы уменьшить время для компиляции, но с компьютером и скоростями компилятора в эти дни это просто wouldn’t оказывает любое заметное влияние.

28
задан kylex 17 March 2012 в 03:42
поделиться

5 ответов

Я использую вторая SUBSTRING, потому что она более портативна.

Если кто-то пытается добавить объект указанного типа, например, в этом случае, пытается добавить String к и Vector , компиляция- возникнет ошибка времени, указывающая на то, что добавляется объект не ожидаемого типа.

Тем не менее, следует стараться не использовать класс Vector . Для большего количества целей будет достаточно класса, реализующего List , такого как ArrayList из Java Collections Framework , и он будет работать лучше.

Edit

Хотя не имеющий прямого отношения к вопросу о дженериках, Адам Пэйнтер поднял хороший момент в комментариях об использовании автобокса.

Начиная с Java 5, примитивы и их классы-оболочки, например int и Integer будут автоматически преобразованы между собой по мере необходимости.

Таким образом, можно добавить значение, указанное как int или int литерал в класс, ожидающий Integer :

Vector<Integer> v = new Vector<Integer>();
v.add(5);    // Not necessary to use an Integer value.
34
ответ дан 28 November 2019 в 03:24
поделиться

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

Vector<Integer> moves = new Vector<Integer>();
moves.add(new Integer(x));
6
ответ дан 28 November 2019 в 03:24
поделиться

Если у вас нет другого выбора, кроме как использовать неуниверсальную структуру данных, вы можете поместить @SuppressWarnings ("unchecked") в начало метода, чтобы отключить предупреждение.

Это можно сделать, только если у вас нет другого выбора, кроме как использовать неуниверсальный вектор. Обычно это происходит, когда вы работаете со старыми библиотеками или определенными частями библиотек времени выполнения Java.

3
ответ дан 28 November 2019 в 03:24
поделиться
  1. инициализируйте свой вектор следующим образом

     Vector  move = new Vector  ( );
    
  2. Предпочтительно использовать java.util.ArrayList - это замена Vector

1
ответ дан 28 November 2019 в 03:24
поделиться

Не имеет прямого отношения к коду, но рекомендуется использовать (начиная с версии> = 5) ):

Integer.valueOf(x);

вместо

new Integer(x);

Потому что некоторые целочисленные значения {-128, ..., 127) кэшируются и всегда будут возвращать один и тот же объект. Это очень полезно, особенно в отношении автобокса .

0
ответ дан 28 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

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