1

異なる変数を使用して同じデータにアクセスしたいと考えています。

つまり、私は配列を持っています:

float[] vector = new float[3];

配列内の各値にも個別のラベルを付けたいと思います。

vector[0] == pitch;
vector[1] == yaw;
vector[2] == roll;

vector[] とピッチ/ヨー/ロールを同じ意味で使用したいと思います。2 つの関数間で 3 つの値すべてを渡すときは、配列を参照したいのですが、それらに個別にアクセスするときは、ピッチ ヨーとロールとして参照したいと思います。

これはJavaで可能ですか?

4

3 に答える 3

5

これはあなたが意味する方法では不可能です。pitch = 20を設定して取得することはできませんvector[0] == 20。プリミティブは、少なくとも Java ではそのようには機能しません。ただし、できること (すべきこと) は、、 などのVectorメソッドを持つ名前のクラスを作成し、 を内部実装の詳細として使用することです。setPitchgetPitchfloat[3]

于 2013-07-25T20:37:37.863 に答える
2

floatプリミティブと type の配列ではこれを行うことはできませんfloat[]。Java は、プリミティブへのポインターまたは参照である変数をサポートしていません。

ただし、いくつかの回避策があります。

まず、float 値を保持する独自の変更可能な参照型を作成できます。

MyFloat[] vector = new MyFloat[3] { new MyFloat(p), new MyFloat(y), new MyFloat(r) };
MyFloat pitch = vector[0];
MyFloat yaw = vector[1];
MyFloat roll = vector[2];

ただし、配列をオブジェクトでラップし、メソッドを使用して、変数ではなく意味のある名前でメンバーを取得する方がよいでしょう。

public class Orientation {
  private float[] vector = new float[3];

  public float[] getArray() { return vector; }

  public pitch() { return vector[0]; }
  public yaw() { return vector[1]; }
  public roll() { return vector[2]; }

  public setPitch( float pitch ) { vector[0] = pitch; }
  public setYaw( float yaw ) { vector[1] = yaw; }
  public setRoll( float roll ) { vector[3] = roll; }
}

これはあなたを近づけます - ただ言うことはできませんがpitch、言うことはできますo.pitch()

于 2013-07-25T21:09:17.667 に答える
0

Java でプリミティブ データ型を渡すと、そのデータのコピーが要求されたメソッドに送信されるだけです。(コピーではなく) 値への参照を渡す場合は、変数のオブジェクト形式を使用する必要があります。

したがって、Float代わりに使用しfloatます。これにより、数値はプリミティブ データ型ではなくオブジェクト変数になります。

于 2013-07-25T20:38:14.737 に答える