@gedovirhir

Как взаимодействовать с элементами HashMap типа Long, занести значение в другую переменную?

Пишу скрипты в elasticsearch, но это особо не играет роли (наверное).
Суть такая: есть HashMap, где значение ключа 'extra.records_count' типа Long. Вот что происходит, когда я пытаюсь иницилиазировать переменную значением этого ключа:

1) Код:
int rec_count = doc['extra.records_count'].value;
Ошибка:
"cannot convert MethodHandle(Longs)long to (Object)int"

Тут понятно, пытаемся в int засунуть long, но если...

2) Код:
Long rec_count = doc['extra.records_count'].value;
или
Long rec_count = (Long)doc['extra.records_count'].value

Ошибка:
"class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')"

3)Код:
long rec_count = doc['extra.records_count'].value;
Ошибка:
"class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')"

Как решить проблему?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Для начала расскажи шо цэ тэкэ:
doc['extra.records_count'].value
на синтаксис Java это вообще не похоже.
В Java с квадратными скобками - это массив, внутри скобок - индекс массива (индекс имеет тип int). Поля value у массива нет. Одинарными кавычками обозначают char (одиночный символ).

Если doc - это HashMap, а extra.records_count - переменная типа long, то доставать значение надо так:
// вместо String подставь тот тип, в котором хранятся value в мапе
String value = doc.get(extra.records_count);


И ещё. В Java по правилам переменные именуются кэмэл-кейсом, т.е. не rec_count, а recCount.
Ответ написан
Ваш ответ на вопрос

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

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