我想使用不同的变量来访问相同的数据。
即。我有一个数组:
float[] vector = new float[3];
我希望数组中的每个值也都有自己的标签,即:
vector[0] == pitch;
vector[1] == yaw;
vector[2] == roll;
我想使用vector []&俯仰/偏航/滚动可互换。当我在两个函数之间传递所有三个值时,我想引用数组,但是当我单独访问它时,我想将它们称为音高偏航和滚动。
这在Java中可行吗?
答案 0 :(得分:5)
这是不可能的。您无法设置pitch = 20
并获取vector[0] == 20
;至少,原语在Java中不起作用。但是你可以做什么 - 你应该做什么 - 创建一个名为Vector
的类,其方法名为setPitch
,getPitch
等,并使用float[3]
作为内部实施细节。
答案 1 :(得分:2)
您无法使用原始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()
。
答案 2 :(得分:0)
在java中传递原始数据类型只会将其数据的副本发送到请求的方法。如果您希望将引用传递给值(而不是副本),则应使用变量的Object形式。
因此,请使用Float
代替float
。这将使您的数字成为对象变量而不是原始数据类型。