Не может преобразовать от текстового объекта до долго

Мне назвали хеш-таблицу table. Значение типа long. Я получаю использование значений .values(). Теперь я хочу получить доступ к этим значениям.

Collection val = table.values();

Iterator itr = val.iterator();
long a  =   (long)itr.next();

Но когда я пытаюсь получить его, это дает мне ошибку, потому что я не могу преобразовать из типа object кому: long. Как я могу обойти его?

16
задан Null 4 September 2015 в 15:11
поделиться

3 ответа

Попробуйте: long a = ((Long) itr.next ()). LongValue ();

4
ответ дан 30 November 2019 в 15:40
поделиться

Вы должны использовать новые Generics функции из Java 5.

Когда вы берете элемент из коллекции , вы должны преобразовать его в {{1 }} тип элемента, который хранится в коллекции . Это не только , но и небезопасно . Компилятор не проверяет, совпадает ли ваше приведение с типом коллекции, , поэтому приведение может завершиться ошибкой во время выполнения.

Generics предоставляет вам способ сообщить тип коллекции компилятору, чтобы его можно было проверить. Как только компилятору известен тип элемента коллекции, компилятор может проверить, что вы использовали коллекцию последовательно, и может вставить правильные преобразования значений извлекают из коллекции.

Вы можете прочитать это быстрое руководство или более полное руководство .

3
ответ дан 30 November 2019 в 15:40
поделиться

Попробуйте следующее:

  Long a = (Long)itr.next();

В итоге вы получите объект Long, но с автобоксингом вы можете использовать его почти как примитивный long.

Другой вариант - использовать Generics:

  Iterator<Long> itr = val.iterator();
  Long a = itr.next();
35
ответ дан 30 November 2019 в 15:40
поделиться
Другие вопросы по тегам:

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