Chronicle Map 支持基元数组吗?
Chronicle Map support for arrays of primitives?
假设我有这样的事情:
public interface ITest {
long[] getDataArray();
void setDataArray(long[] data);
}
在这种情况下,因为长[]看起来我不能使用
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
异常)
听起来很奇怪我错过了什么吗?使用此类对象的最佳方法是什么?实现自己的序列化?
Chronicle Values 被设计为固定大小的结构。如果您需要存储一些可变大小的字段 e。 G。 CharSequences(包括字符串)或数组,您应该指定它们可能的最大大小,这个最大大小将始终分配给该字段,因此如果您存储较短的 CharSequences 或数组,您会浪费一些内存 space 作为 unreclmained。
如果那是你需要的,e。 G。如果您所有的数组实际上都具有相同的长度,并且您不会浪费任何 space,或者数组长度略有不同,或者您有时可以浪费一些 space 来获得其他将接口视为 Chronicle 的好处Map的keys or values提供,可以在value接口中有数组字段,如下:
public interface ITest {
@Array(length=CONSTANT_OR_MAX_ARRAY_LENGTH)
long getDataAt(int index);
void setDataAt(int index, long data);
}
假设我有这样的事情:
public interface ITest {
long[] getDataArray();
void setDataArray(long[] data);
}
在这种情况下,因为长[]看起来我不能使用
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
异常)
听起来很奇怪我错过了什么吗?使用此类对象的最佳方法是什么?实现自己的序列化?
Chronicle Values 被设计为固定大小的结构。如果您需要存储一些可变大小的字段 e。 G。 CharSequences(包括字符串)或数组,您应该指定它们可能的最大大小,这个最大大小将始终分配给该字段,因此如果您存储较短的 CharSequences 或数组,您会浪费一些内存 space 作为 unreclmained。
如果那是你需要的,e。 G。如果您所有的数组实际上都具有相同的长度,并且您不会浪费任何 space,或者数组长度略有不同,或者您有时可以浪费一些 space 来获得其他将接口视为 Chronicle 的好处Map的keys or values提供,可以在value接口中有数组字段,如下:
public interface ITest {
@Array(length=CONSTANT_OR_MAX_ARRAY_LENGTH)
long getDataAt(int index);
void setDataAt(int index, long data);
}