Java:如何让对象引用它实例化的对象

时间:2015-03-22 18:00:51

标签: java object

我仍然缺乏使用Java的经验,并希望解决这个绊脚石:

我创建了两个用于刚体动力学模拟的类,名为:

RigidBody RigidBodyElement

计划是创建一个RigidBody对象。该对象将包含许多小RigidBodyElement个对象。因此,在RigidBody内,将有一个类型为RigidBodyElements的数组,以包含所有刚体元素。

对于RigidBodyElement,将有一个字段变量,包含元素相对于RigidBody对象上固定点的坐标。该变量将被称为relativeCoordinates

那很好。当我们想要找到每个元素的绝对坐标absoluteCoordinates时,就会出现问题。要找到这一点,我们需要将relativeCoordinates RigidBodyElement的{​​{1}}添加到整体刚体的坐标RigidBody。即在RigidBodyElement中编写函数,这样当RigidBodyElements的实例调用此函数时,它将从实例化该元素的类RigidBody的实例中获取一些信息。

我目前不知道如何为对象定义一个函数来引用已实例化第一个对象的另一个对象。

2 个答案:

答案 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;
    }
  }
}