我有以下建筑类:
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();
谢谢!
最佳答案
实际上,您使用采用楼层号(第二个参数)的构造函数创建了 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;
}
}
要获取 firstFloor
的 floorNo
(它只是 Floor
的一个实例),您应该创建(并使用!)一个 <其floorNo
字段的strong>getter。
例如,您可以将以下方法添加到 Floor
类中:
public int getFloorNo() {
return this.floorNo;
)
因此,您可以知道 Floor
任何实例的楼层号,如下所示:
System.out.println(firstFloor.getFloorNo());
将输出:
1
关于java - 在java中使用this保存多个对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649570/