如何创建函数来更新与 i 不同的变量?

How to create Funtion to update variables that differ i?

我有几个不同的变量 "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)

How can I create a function to update a given variable?

你不知道。正确的解决方案是将 wip0, wip1,... wip26 替换为单个变量,该变量是一个包含 27 个元素的数组。然后使用数组索引 select 适当的数组元素来读取/更新。

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

在你的周围定义一个数组 class 并使用 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 来创建包含所需内容的填充数组。然后你可以像这样在 class 中声明 属性:

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

请参阅 this post,我从中获取流模板。