Java 如何将类的实例传递给作为参数的数组?
我有一个方法,其中一个参数是数组:Java 如何将类的实例传递给作为参数的数组?,java,arrays,parameters,instance,Java,Arrays,Parameters,Instance,我有一个方法,其中一个参数是数组: public ItemToolPickaxe(int itemNum, String itemName, String iconName, Block[] usedOn, int durability, int quality) { super(itemNum, itemName, iconName, usedOn, durability, quality); } 块是可以在其上使用的块。在我的代码中,我有: public stat
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和任何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);
但正如你现在可能知道的那样,它不起作用。有解决方案吗?创建一个空的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);
}
}
封装测试;
导入java.util.ArrayList;
公开课考试{
静态类块{};
静态类OreBlock扩展块{};
公共静态void main(字符串[]args){
Block[]arrayOfBlocks=new Block[]{new Block(),new OreBlock(),new Block(),new OreBlock()};
ArrayList ArrayListForeBlocks=新的ArrayList();
用于(块:ArrayOfBlock){
if(block!=null&&block OreBlock实例){
arraylistoreblocks.add((OreBlock)block);
}
}
OreBlock[]ArrayStoforeBlocks=arrayListOfOreBlocks.toArray(新的OreBlock[arrayListOfOreBlocks.size());
System.out.println(ArrayForeblocks.length);
}
}
当我运行它时,它会像预期的那样打印2。要求提供一个这样的例子是不是太过分了,到现在为止从未使用过数组,无需使用数组。不管你是谁,我添加了它。