2014-04-26 30 views
0

以及我有這種方法,該方法的一個參數是一個數組:如何將類的實例傳遞給作爲參數的數組?

public ItemToolPickaxe(int itemNum, String itemName, String iconName, Block[] usedOn, int durability, int quality) { 
     super(itemNum, itemName, iconName, usedOn, durability, quality); 

    } 

塊是哪個塊(一個或多個),可以使用上。在我的代碼有:

public static Item ironPickaxe = new ItemToolPickaxe(0, "Iron Pickaxe", "item_ironPickaxe", new Block[] { Block.stone }, 500, 75); 

我想可以在Block.stone使用鐵鎬,那就是BlockOre一個實例任何塊。

public static Block oreIron = new BlockOre(/*Non-Related*/); 

所以我就在想:

public static Item ironPickaxe = new ItemToolPickaxe(0, "Iron Pickaxe", "item_ironShovel", new Block[] { Block.stone, BlockOre.class }, 500, 75); 

但正如你可能知道按現在不工作BlockOre這裏看到我的塊類擴展模塊。任何解決方案

回答

0

創建一個空的ArrayList。遍歷你的數組塊,併爲每個項目檢查它是否是BlockOre的實例。如果是,請將其添加到ArrayList。完成後,將ArayList轉換爲數組,並將其傳遞給Pickaxe構造函數。

編輯:

下面是代碼的要求:

package test; 

import java.util.ArrayList; 

public class Test { 

    static class Block {}; 

    static class OreBlock extends Block {}; 

    public static void main(String[] args) { 

     Block[] arrayOfBlocks = new Block[] {new Block(), new OreBlock(), new Block(), new OreBlock()}; 
     ArrayList<OreBlock> arrayListOfOreBlocks = new ArrayList<OreBlock>(); 
     for(Block block : arrayOfBlocks){ 
      if(block != null && block instanceof OreBlock){ 
       arrayListOfOreBlocks.add((OreBlock)block); 
      } 
     } 
     OreBlock[] arrayOfOreBlocks = arrayListOfOreBlocks.toArray(new OreBlock[arrayListOfOreBlocks.size()]); 
     System.out.println(arrayOfOreBlocks.length); 
    } 

} 

它打印2當我運行它,符合市場預期。

+0

是不是要求一個這樣的例子太多了,從來沒有使用過的數組直到現在從來沒有意識到數組列表 – SemperAmbroscus

+0

在這裏,我添加了它。 – yotsov

+0

非常感謝 – SemperAmbroscus

相關問題