gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:13:30 25 4
gpt4 key购买 nike

我有以下建筑类:

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

要获取 firstFloorfloorNo(它只是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com