我仍然缺乏使用Java的经验,并希望解决这个绊脚石:
我创建了两个用于刚体动力学模拟的类,名为:
RigidBody
RigidBodyElement
计划是创建一个RigidBody
对象。该对象将包含许多小RigidBodyElement
个对象。因此,在RigidBody
内,将有一个类型为RigidBodyElements
的数组,以包含所有刚体元素。
对于RigidBodyElement
,将有一个字段变量,包含元素相对于RigidBody
对象上固定点的坐标。该变量将被称为relativeCoordinates
。
那很好。当我们想要找到每个元素的绝对坐标absoluteCoordinates
时,就会出现问题。要找到这一点,我们需要将relativeCoordinates
RigidBodyElement
的{{1}}添加到整体刚体的坐标RigidBody
。即在RigidBodyElement
中编写函数,这样当RigidBodyElements
的实例调用此函数时,它将从实例化该元素的类RigidBody
的实例中获取一些信息。
我目前不知道如何为对象定义一个函数来引用已实例化第一个对象的另一个对象。
答案 0 :(得分:3)
您可以使用this
关键字。
所以你应该有这样的构造函数:
RigidBodyElement(RigidBody body)
{
....
}
在RigidBody的实例方法中实例化它:
new RigidBodyElement(this);
答案 1 :(得分:3)
另一种方法是你可以让RigidBodyElement成为一个内部类。
public class RigidBody{
private double x, y;
private List<RigidBodyElement> elements = new ArrayList<>();
public RigidBody(){
elements.add(new RigidBodyElement(50,20));
}
public class RigidBodyElement(){
private double x, y;
public RigidBodyElement(double x, double y){
this.x=x;
this.y=y;
}
public double getAbsoluteX(){
//RigidBody.this references the RigidBody which created this element
return RigidBody.this.x + this.x;
}
}
}