我想使用不同的变量来访问相同的数据。
即我有一个数组:
float[] vector = new float[3];
我希望数组中的每个值也有其单独的标签,即:
vector[0] == pitch;
vector[1] == yaw;
vector[2] == roll;
我想交替使用vector[] & pitch/yaw/roll。当我在两个函数之间传递所有三个值时,我想引用数组,但是当我单独访问它们时,我想将它们称为俯仰偏航和滚动。
这在Java中可能吗?
我想使用不同的变量来访问相同的数据。
即我有一个数组:
float[] vector = new float[3];
我希望数组中的每个值也有其单独的标签,即:
vector[0] == pitch;
vector[1] == yaw;
vector[2] == roll;
我想交替使用vector[] & pitch/yaw/roll。当我在两个函数之间传递所有三个值时,我想引用数组,但是当我单独访问它们时,我想将它们称为俯仰偏航和滚动。
这在Java中可能吗?
这不可能按照你的意思。你不能设置pitch = 20
和获取vector[0] == 20
;至少,原语在 Java 中不是这样工作的。但是,您可以做的(您应该做的)是使用名为 , 等的方法创建一个名为的类,并将Vector
用作内部实现细节。setPitch
getPitch
float[3]
你不能用一个原始float
类型和一个类型的数组来做到这一点float[]
。Java 不支持作为指针或对原语的引用的变量。
但是,有一些解决方法。
首先,您可以创建自己的可变引用类型来保存浮点值。
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()
。
在 java 中传递原始数据类型只会将其数据的副本发送到请求的方法。如果您希望将引用传递给值(而不是副本),那么您应该使用变量的对象形式。
所以,Float
用float
. 这将使您的数字成为对象变量而不是原始数据类型。