如何创建Funtion来更新不同的变量?

时间:2016-02-21 01:36:34

标签: java anylogic

我有几个不同的变量" i",例如wip0,wip1,... wip26。每一个都是整数的集合。这可能很容易,但我无法找到答案。

如何创建更新给定变量的函数?

我有更新特定变量的功能,但我不想创建27个功能。

现在我有:

updateWip(int type, int quantity){
int temp;
temp = wip.get(type);
temp = temp + quantity;
wip.set(materialType, temp);
}

我需要这样的东西:

updateWip(int type, int quantity, int station)

2 个答案:

答案 0 :(得分:1)

在周围的类中定义一个数组,并使用station参数作为数组索引,如下所示:

class Stations {
  WIP[] wip = new WIP[27];
  public void updateWip(int type, int quantity, int station) {
     //...
     wip[station].set(materialType, temp);
  }
}

但是,这需要您初始化数组字段,因为首先像'wip [0]'这样的每个字段都是null。为了克服这个问题,你可以添加一个初始化数组字段的循环,例如:在构造函数中。有关数组的更多信息,请查看this site

当您使用java8时,您还可以使用流API来创建具有所需内容的填充数组。然后你可以像这样在类中声明属性:

WIP[] wip = IntStream.generate(() -> new WIP()).limit(27).toArray();

请参阅this post,我从哪里获得流式传输模板。

答案 1 :(得分:0)

  

如何创建更新给定变量的函数?

你没有。正确的解决方案是用单个变量替换wip0, wip1,... wip26,该变量是一个包含27个元素的数组。然后使用数组索引来选择要读取/更新的相应数组元素。

理论上,你可以使用反射来更新变量,如果它们是字段(不是局部变量!),但这非常可怕(复杂的代码,数量级低效,易碎)。只是不要这样做......