java对象数组列表索引

标签 java object

我正在 java 中运行以下代码并有一些问题。

我在测试类中调用以下行:

building.floor(3).waitForElevator();

我的 Building 类具有以下方法,该方法从给定楼层编号的数组(楼层)返回楼层对象。

ArrayList<Floor> floors = new ArrayList<Floor>();

public Floor floor(int floorNumber) {
    return floors.get(floorNumber);
}

我的 Floor 类有 waitForElevator() 方法。在我的Floor 类中,我还有一个长度为7 的数组,名为passengerWaiting。每当调用 waitForElevator() 时,我想访问passengerWaiting 数组中正确的floorNumber 并更改其值。

我遇到的问题是当调用building.floor(3).waitForElevator()时,如何从Floor类访问索引(本例中为3)。

感谢您提前提供的所有帮助。

最佳答案

您可以将该值存储在类实例变量中,并使其可通过访问器访问。

public class Building{
    private int floor = 0;

    private ArrayList<Floor> floors = new ArrayList<Floor>();

    public Buliding(){
        Floor floor1 = new Floor(this);
        this.floors.add(floor1);
    }

    public Floor floor(int floorNumber) {
        this.floor = floorNumber;
        return floors.get(floorNumber);
    }

    public int getFloor(){
        return floor;
    }
}

如果您为Floor添加一个构造函数,该构造函数接受建筑物的实例并将其存储为实例变量,您可以随时访问楼层。

public class Floor{
   private Building building;

   public Floor(Building building){
       this.building = building;
   }

   public void waitForElevator(){
       int floor = this.building.getFloor();
   }
}

另一种解决方案

只需将 int 作为参数传递给 waitForElevator 即可。

public class Floor{

   public void waitForElevator(int floor){
       System.out.println(floor);
   }
}

//Usage
building.floor(3).waitForElevator(3);

注意此解决方案不太好,因为客户端可以调用 building.floor(3).waitForElevator(4);

关于java对象数组列表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468126/

相关文章:

php - 对象到数组的转换给出奇怪的结果

java - tomcat启动时创建任务线程的正确方法

java - 应用程序重定向到 JBoss EAP 7.0 的默认页面

Java 对象到 XML 模式

javascript - VS object.key 中的“key”

python - 动态实例化对象

Java UDP服务器-客户端通信-发送分片(分片发送失败)

java - Android:防止Alert中的EditText为空

java - 无法理解java中split的使用

javascript - 从对象中选取一些随机属性