【发布时间】:2016-09-08 11:36:50
【问题描述】:
这个问题是关于Chronicle-Values
在网站上找到的一个例子是:
interface SomeStats {
@Array(length=100)
long getPercentFreqAt(int index);
void setPercentFreqAt(int index, long percentFreq);
long addPercentFreqAt(int index, long addition);
}
这里的注解只适用于其中一种方法。这是否意味着之后的所有方法都被视为处理数组数据?
在one of the test 我发现的案例中
package net.openhft.chronicle.values;
public interface HasArraysInterface {
@Array(length = 4)
void setFlagAt(int idx, boolean flag);
boolean getFlagAt(int idx);
@Array(length = 4)
void setByteAt(int idx, byte b);
byte getByteAt(int idx);
@Array(length = 4)
void setShortAt(int idx, short s);
short getShortAt(int idx);
@Array(length = 4)
void setCharAt(int idx, char ch);
char getCharAt(int idx);
@Array(length = 4)
void setIntAt(int idx, int i);
int getIntAt(int idx);
@Array(length = 4)
void setFloatAt(int idx, float f);
float getFloatAt(int idx);
@Array(length = 4)
void setLongAt(int idx, long l);
long getLongAt(int idx);
@Array(length = 4)
void setDoubleAt(int idx, double d);
double getDoubleAt(int idx);
@Array(length = 4)
void setStringAt(int idx, @MaxUtf8Length(8) String s);
String getStringAt(int idx);
}
我从中了解到的是,您可以在此接口中拥有多个数组,其中@Array(length = 4) 适用于以At 结尾的方法,直到下一个注释。是这样吗?
此外,您是否可以使用以下内容来模拟 4 个双精度数组和 8 个字符串数组:
@Array(length = 4)
void setDoubleAt(int idx, double d);
double getDoubleAt(int idx);
@Array(length = 8)
void setStringAt(int idx, @MaxUtf8Length(8) String s);
String getStringAt(int idx);
在一个接口内分配多个@Array(length= ?)的多个数组的内存布局是什么?您可以在面向列或面向行的布局之间进行选择吗?如果length 不同,布局将如何处理?
也代替:
interface SomeStats {
@Array(length=100)
long getPercentFreqAt(int index);
void setPercentFreqAt(int index, long percentFreq);
long addPercentFreqAt(int index, long addition);
}
你能不能写成:
@Array(length=100)
interface SomeStats {
long getPercentFreqAt(int index);
void setPercentFreqAt(int index, long percentFreq);
long addPercentFreqAt(int index, long addition);
}
暗示@Array(length=100)适用于整个界面。
您还可以推迟指定长度直到创建点吗?
【问题讨论】:
标签: java arrays memory-management chronicle