Мне назвали хеш-таблицу table
. Значение типа long
. Я получаю использование значений .values()
. Теперь я хочу получить доступ к этим значениям.
Collection val = table.values();
Iterator itr = val.iterator();
long a = (long)itr.next();
Но когда я пытаюсь получить его, это дает мне ошибку, потому что я не могу преобразовать из типа object
кому: long
. Как я могу обойти его?
Попробуйте: long a = ((Long) itr.next ()). LongValue ();
Вы должны использовать новые Generics функции из Java 5.
Когда вы берете элемент из коллекции , вы должны преобразовать его в {{1 }} тип элемента, который хранится в коллекции . Это не только , но и небезопасно . Компилятор не проверяет, совпадает ли ваше приведение с типом коллекции, , поэтому приведение может завершиться ошибкой во время выполнения.
Generics предоставляет вам способ сообщить тип коллекции компилятору, чтобы его можно было проверить. Как только компилятору известен тип элемента коллекции, компилятор может проверить, что вы использовали коллекцию последовательно, и может вставить правильные преобразования значений извлекают из коллекции.
Вы можете прочитать это быстрое руководство или более полное руководство .
Попробуйте следующее:
Long a = (Long)itr.next();
В итоге вы получите объект Long, но с автобоксингом вы можете использовать его почти как примитивный long.
Другой вариант - использовать Generics:
Iterator<Long> itr = val.iterator();
Long a = itr.next();