Java アプリケーションのパフォーマンスを向上させるために、オブジェクトを記述する static final フィールドを持つクラスを作成し、配列からオブジェクトのすべてのデータを取得する静的メソッドを配置することを考えていました。
例: オブジェクトを作成したいとしましょう: ある人が年齢、身長、体重、目の色、および世界座標を持っているとします。
通常、私は次のようなことをします:
public class Person {
private int age;
private int height;
private int weight;
private int eyeR;
private int eyeG;
private int eyeB;
private float x;
private float y;
private float z;
//... getters and setters
}
クライアントからサーバーに人物を送信したいので、オブジェクトをシリアル化してサーバーに送信する必要があります。これにより、オブジェクトが逆シリアル化され、反対側の人が復活します。これで、Java オブジェクトが格納されていることがわかりました。ヒープと、すべてのオブジェクトには、オブジェクトを記述するために割り当てられる最小バイト数があること。
私がやりたいのは、代わりにこれです:オブジェクトの人物を説明するクラスを作成します:
public class Person {
// size contains the number of bytes to describe my person
public static final int size;
//this byte here is used to identify a Person in a float array
public static byte classID = 0;
//these variables contains the position of my attributes inside a float array
// since floats / int are all coded in 4 bytes
public static final int age = 0;
public static final int height = 1;
public static final int eyeR = 2;
public static final int eyeG = 3;
public static final int eyeB = 4;
public static final int x = 5;
public static final int y = 6;
public static final int z = 7;
//i don't check for nullity, i trust myself.
public static int getAge(final float[] person) {
return person[Person.age];
}
public static void setAge(final float[] person, float age) {
return person[Person.age] = age;
}
... do the same thing for the rest also you can store
}
このソリューションが実行可能かどうかを本当に知りたいです.float配列のみを使用して個人データを保存しているため、メモリ内のデータの空間的近接性を取得できるため、データにアクセスすると作成しないと思いますどのページも見逃せません。
また、オブジェクトをシリアル化または逆シリアル化する必要はありません。float 配列はそのままでよいため、静的メソッドを使用して float 配列にアクセスするだけです。