在java中使用它保存多个对象引用

时间:2014-03-26 01:09:17

标签: java object

我有以下建筑类:

public class Building {

static ArrayList<Floor> floors = new ArrayList<Floor>();
public Elevator elevator;
public static int floorNo;

//constructor creates elevator and floor objects
public Building() {
    elevator = new Elevator(Elevator.building);

    int count = 1;
    while (count != FLOORS+1) {
        floors.add(new Floor(Elevator.building, count));
        count++;
    }
}

//returns proper floor object by accessing the array
public static Floor floor(int floorNumber) {
    this.floorNo = floorNumber;
    return floors.get(floorNumber-1);
}

public static int getFloorNo() {
    return floorNo;
}

}

如果我创建以下对象并在其上调用某些方法。我失去了对象的身份,当我调用这个方法时,我不知道它被调用了哪个对象。

//I save the 1 using this in floor(), so floorNo = 1
Floor firstFloor = building.floor(1);   

//now floorNo = 2
Floor secondFloor = building.floor(2); 

//here how do I know that firstFloor is 1 since floorNo value is changed
firstFloor.waitForElevator();

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,您使用构造函数创建了firstFloor,其构造函数的楼层数(第二个参数)。

我猜您的Floor课程如下:

public class Floor {
   private final int floorNo;
   private final Elevator elevator;

   public Floor(final Elevator elevator, final int floorNo) {
       this.elevator = elevator;
       this.floorNo = floorNo;
   }
}

要获取floorNo的{​​{1}},这只是firstFloor的一个实例,您应该为其创建(并使用!) getter Floor字段。

例如,您可以向floorNo班添加以下方法:

Floor

因此,你可以知道public int getFloorNo() { return this.floorNo; ) 的任何实例的楼层编号,如下所示:

Floor

输出:

System.out.println(firstFloor.getFloorNo());