我正在使用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();
知道我做错了吗?
答案 0 :(得分:2)
地图密钥的类型为long[]
(二进制名称[J
),但您尝试使用与byte[]
([B
)一起使用的哈希。请尝试使用Hasher.LONG_ARRAY
。