我有以下建筑类:
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();
谢谢!
答案 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());