将对象分配给java中的另一个对象

时间:2014-03-22 20:21:50

标签: java

我正在研究Java中的电梯问题。我遇到的一个问题是如何将对象分配给对象。例如,有7层,每层是一个对象。所以......

4 个答案:

答案 0 :(得分:4)

您可以让resident设置Floor类的成员,以便每个实例都跟踪它自己的居民:

public class Floor {
    private Set<Passenger> resident = new HashSet<>();

    public boolean isResident(Passenger p) {
        return resident.contains(p);
    }
}

答案 1 :(得分:0)

我觉得住宅楼是一个属于居民的地方。只需在Floor对象中保留Passenger个对象。

public class Passenger {
  private Floor residenceFloor;

  public void setResidenceFloor(Floor residenceFloor) {
    this.residenceFloor = residenceFloor;
  }

  public Floor getResidenceFloor() {
    return residenceFloor;
  }
}

在评估居民是否属于某个楼层时,只需对您的Floor对象使用覆盖等于方法。

Floor f1 = new Floor();
Passenger p1 = new Passenger();
p1.setResidenceFloor(f1);

if (f1.equals(p1.gerResidenceFloor()) {
  // p1 is a resident of f1
}

您还可以在Set个对象中容纳Floor个居民。这些只是两种不同的OOP样式。

答案 2 :(得分:0)

简短的回答是:是的。

由于您有一个包装函数isResident,您还可以实现包装器addResident并将resident声明为private

答案 3 :(得分:0)

不确定您的总体目标或用途是什么,但似乎给Floor类提供了由构造函数设置的字段floorNumber可以提供一些额外的灵活性。

Floor floor1 = new Floor(1);

然后,只需将residenceFloor作为乘客的一个领域:

public class Passenger {
  private int residenceFloor;

  public void setResidenceFloor(Floor residenceFloor) {
    this.residenceFloor = residenceFloor.floorNumber;
  }

  public Floor getResidenceFloor() {
    return residenceFloor;
  }
}

将楼层号作为字段对我来说似乎更有用,因为它允许一种简单的方法让其他方法/字段引用它。乘客可以在当前的地点拥有当前的地板,或者居民可能会移动到不同的楼层,任何需要更改或设置楼层状态的方法都可以使用您通过它的任何楼层的楼层数。