Ошибка создания карты в MapDB: ClassCastException: [J не может быть приведен к [B

1

Я использую MapDB и пытаюсь создать карту с прямой памятью, используя long-arrays в качестве ключей, и я получаю следующую ошибку:

java.lang.ClassCastException: [J cannot be cast to [B
    at org.mapdb.Hasher$2.hashCode(Hasher.java:46)
    at org.mapdb.HTreeMap.hash(HTreeMap.java:954)
    at org.mapdb.HTreeMap.get(HTreeMap.java:390)

Мой код:

Map<long[],LongBitsWrapper> inUseMap;

DB db = DBMaker
    .newMemoryDirectDB()
    .transactionDisable()
    .asyncWriteFlushDelay( 100 )
    .make();

HTreeMapMaker maker = 
    db.createHashMap( "longBitsInUseMap" )
        .hasher( Hasher.BYTE_ARRAY )
        .keySerializer( Serializer.BYTE_ARRAY );

inUseMap = maker.makeOrGet();

Любая идея, что я делаю неправильно?

  • 0
    Вы не можете привести один тип массива к другому типу. Период.
Теги:
mapdb

1 ответ

2
Лучший ответ

Клавиши карты имеют тип long[] (двоичное имя [J ], но вы пытаетесь использовать хешер, который работает с byte[] ([B). Hasher.LONG_ARRAY этого попробуйте использовать Hasher.LONG_ARRAY.

  • 0
    Это сработало. Я просто ввел неверный аргумент. Я также не понял, что [J и [B имели в виду.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню