サイトで見つかった一例は次のとおりです。
interface SomeStats {
@Array(length=100)
long getPercentFreqAt(int index);
void setPercentFreqAt(int index, long percentFreq);
long addPercentFreqAt(int index, long addition);
}
ここでは、アノテーションはメソッドの 1 つにのみ適用されます。これは、その後のすべてのメソッドが配列データで動作するものとして扱われることを意味しますか?
私が見つけたテストケースの1つで
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 つの double の配列と 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= ?)1 つのインターフェイス内で複数割り当てられた複数の配列のメモリ レイアウトはどのようなものですか? 列指向または行指向のレイアウトを選択できますか? が異なる場合、レイアウトはどのように処理されます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)はインターフェース全体に適用されます。
また、長さの指定は作成時まで延期していただけますか?