Chronicle Map支持基元数组?

时间:2016-04-08 01:02:23

标签: chronicle chronicle-map

假设我有点像:

 public interface ITest {
    long[] getDataArray();

    void setDataArray(long[] data);
  }

在这种情况下因为long []看起来我不能使用

Values.newHeapInstance(ITest.class);

(我得到field type class [Lnet.openhft.chronicle.core.values.LongValue; is not supported: not a primitive, enum, CharSequence or another value interface例外)

听起来很奇怪我错过了什么?使用这些对象的最佳方法是什么?实现自己的序列化?

1 个答案:

答案 0 :(得分:1)

Chronicle Values被设计为恒定大小的结构。如果你需要存储一些可变大小的字段e。 G。 CharSequences(包括字符串)或数组,您应该指定它们可能的最大大小,这个最大大小将始终为该字段分配,因此如果您存储较短的CharSequences或数组,则会浪费一些内存空间作为未重新安排。

如果这是你需要的,e。 G。如果你的所有数组实际上都是相同的长度并且你不会浪费任何空间,或者数组长度略有不同,或者你可以浪费一些空间来获得其他有益于接口的其他好处,因为Chronicle Map的键或值提供了,你可以在值接口中有数组字段,如下所示:

public interface ITest {
    @Array(length=CONSTANT_OR_MAX_ARRAY_LENGTH)
    long getDataAt(int index);
    void setDataAt(int index, long data);
}

请参阅https://github.com/OpenHFT/Chronicle-Values#array-fields