在MapDB中创建映射时出错:ClassCastException:[J无法强制转换为[B

时间:2014-08-07 19:49:12

标签: java mapdb

我正在使用MapDB,并尝试使用长数组作为键创建直接内存映射,我收到以下错误:

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();

知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

地图密钥的类型为long[](二进制名称[J),但您尝试使用与byte[][B)一起使用的哈希。请尝试使用Hasher.LONG_ARRAY