【问题标题】:How to call an object in an array's methods?如何在数组的方法中调用对象?
【发布时间】:2014-03-09 19:29:22
【问题描述】:

我创建了一个名为Tilecreator 的类。在这个类中,有一个方法GenerateTile(),它将一些值应用于对象。

如果我创建了这些对象的数组,我如何在循环中将值应用于它们?

例如,我试过:

for(int i = 0; i < 10; i++){
    createdTile[] tile[i] = new Tilecreator();
    tile[i].GenerateTile(
}

【问题讨论】:

  • 你在循环之前初始化了数组吗? “createdTile[] tile[i]”是什么意思?

标签: java arrays object methods


【解决方案1】:

我假设在循环之前有这样的事情:

Tile[] tile = new Tile[10];

如果 GenerateTile 方法是静态的,并且该方法接受一个 tile 对象,您可以这样做:

for(int i = 0; i < 10; i++){
 tile[i] = new Tile(); // or another constructor
 tile[i] = Tilecreator.GenerateTile(tile[i]);
}

如果您有一个 Tilecreator 对象数组(我认为是这种情况,鉴于您的陈述“如果我创建了这些对象的数组......”):

Tilecreator[] tile = new Tilecreator[10];
for(int i = 0; i < 10; i++){
 tile[i] = new Tilecreator(); // or another constructor
 tile[i].GenerateTile();
}

如果是这种情况,我会将 Tilecreator 重命名为 Tile,并让一个单独的 Tilecreator 类来处理切片数组的创建。

【讨论】:

    【解决方案2】:
    Tile[] tiles = new Tile[100];
    

    如果你想遍历一个数组并检查是否有任何空点要初始化:

    for(int id = 0; id < tiles.length; id++) //loops through entire array starting at tiles[0]
         if(tiles[id] == null) { //checks if spot in array is available
             tiles[id] = value; //= new Tile(); initializes value for reference in array
             tiles[id].method(); //calls method from initialized reference
         }
    

    如果您不在乎空位,请取出if(tiles[id] == null)

    如果你只是想循环一个已经有值的数组,并且想触发方法

    for(Tile tile : tiles) 
        tile.method()
    

    要初始化数组点,您必须使用我展示的第一个 forloop(基本 forloop)。增强的 forloops(第二个循环示例)使用数组中值的副本,而不是实际引用本身,因此您无法使用该副本进行初始化

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2015-01-12
      • 2021-12-28
      • 2021-02-26
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多